单例模式

系统中共享的对象可以定义为单例模式。

恶汉模式

public class A{
    //将构造器私有化,防止外部new出新的对象
    private A(){}
    //创建私有的实例对象
    private static A a = new A();
    //创建一个公共静态方法,使外部能够得到实例
    public static A getInstance(){
        return a;
    }
    
}

推荐使用的懒汉模式 (双重检查,静态类部类,枚举都为线程安全的模式)

public class A{
    //将构造器私有化,防止外部new出新的对象
    private A(){}
    //第一种 双重检查
    private static A a;
    public static A getInstance(){
      if(a==nulll){
           synchronized(A.class){
               if(a==null){
                  a = new A();
               }
          }
      }
    return a;
    }
}
//第二种,静态类部类
private static class INSTANCE{
   private static final A a = new A();
}

public static A getInstance(){
    return INSTANCE.a;
}

枚举

  public enum A{
    INSTANCE;
  }

你可能感兴趣的:(单例模式)