单例模式

方式一:

使用时才进行初始化,包括私有的构造方法,私有的全局静态变量,公有的静态方法。

public class Singleton {
  private static Singleton instance;//私有静态变量

  //私有构造方法
  private Singleton() {

      System.out.println("初始化");
  }

  //公有静态方法,暴露使用

  public static Singleton getInstance() {
      if(instance ==null) {
          instance =new Singleton();
      }
  return instance;
  }
}

方式二:

执行效率相对较高,在类加载时初始化,会浪费内存。

public class Singleton{
  private static final Singleton instance =new Singleton();
  private Singleton() {
      System.out.println("初始化");
  }
  public static Singleton getInstance(){
      return instance;
  }
}

方式三:

静态内部类实现,当Singleton 类被加载时,instance 还未被初始化。调用 getInstance 方法时,会显示加载 SingletonHolder 类,从而实例化 instance。

public class Singleton {
  private static class SingletonHolder {
        private static final Singleton INSTANCE =new Singleton();
  }
  private Singleton() {
      System.out.println("初始化");
  }
  public static final Singleton getInstance() {
      return SingletonHolder.INSTANCE;
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容