单例模式+Java

来源:互联网 发布:数据服务 编辑:程序博客网 时间:2024/05/20 15:42

第一种 饿汉模式

public class Singleton {      private static Singleton instance = new Singleton();      private Singleton (){}      public static Singleton getInstance() {      return instance;      }  } 

第二种 静态内部类(lazy coding)

public class Singleton {      private static class SingletonHolder {      private static final Singleton INSTANCE = new Singleton();      }      private Singleton (){}      public static final Singleton getInstance() {      return SingletonHolder.INSTANCE;      }  }

第三种 枚举

public enum Singleton {      INSTANCE;      public void whateverMethod() {      }  }  

第四种 双重校验锁

public class Singleton {      private volatile static Singleton singleton;      private Singleton (){}      public static Singleton getSingleton() {      if (singleton == null) {          synchronized (Singleton.class) {          if (singleton == null) {              singleton = new Singleton();          }          }      }      return singleton;      }  }

构建单例的时候从以上四种方式选取即可。

原创粉丝点击