单例模式——设计模式个人学习
单例模式分为:饿汉模式和懒汉模式
懒汉模式:非线程安全
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不同"); } } }