快捷搜索: 王者荣耀 脱发

单例模式——设计模式个人学习

单例模式分为:饿汉模式和懒汉模式

懒汉模式:非线程安全

public class Singleton1 {
	// 构造函数私有化
	private Singleton1() {
	};

	// 私有对象
	private static Singleton1 singleton = new Singleton1();

	// 得到私有对象
	public static Singleton1 getInstance() {
		return singleton;
	}
}
饿汉模式:线程安全
public class Singleton2 {
	// 构造函数私有化
	private Singleton2() {
	};

	// 私有对象
	private static Singleton2 singleton;

	// 得到私有对象
	public static Singleton2 getInstance() {
		if (null == singleton) {
			singleton = new Singleton2();
		}
		return singleton;
	}
}
测试类:
public class Test {
	/**
	 * 饿汉模式:加载速度快、调用慢需要先创建类、线程安全
	 * 懒汉模式:加载速度慢、调用快开始创建类、线程不安全
	 * @param args
	 */
	public static void main(String[] args) {
		Singleton1 s1 = Singleton1.getInstance();
		Singleton1 s2 = Singleton1.getInstance();

		Singleton2 s3 = Singleton2.getInstance();
		Singleton2 s4 = Singleton2.getInstance();

		if (s1 == s2) {
			System.out.println("s1和s2相同!");
		} else {
			System.out.println("s1和s2不同");
		}

		if (s3 == s4) {
			System.out.println("s3和s4相同!");
		} else {
			System.out.println("s3和s4不同");
		}

	}
}



经验分享 程序员 微信小程序 职场和发展