单例模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40254498/article/details/79133275

懒汉模式

线程安全的单例模式(记录)
public class Singleton {
    private Singleton() {}  //私有构造函数
    private volatile static Singleton instance = null;  //单例对象
    //静态工厂方法
    public static Singleton getInstance() {
          //双重检测机制
         if (instance == null) {     
          //同步锁 
         synchronized (Singleton.class){  
           if (instance == null) {    
            //双重检测机制
             instance = new Singleton();
                }
             }
          }
          return instance;
      }
}

枚举创建单例

单例的枚举实现在《Effective Java》中有提到,
因为其功能完整、使用简洁、无偿地提供了序列化机制、 
在面对复杂的序列化或者反射攻击时仍然可以绝对防止多次实例化等优点, 
单元素的枚举类型被作者认为是实现Singleton的最佳方法。 
class Resource{
}

public enum SomeThing {
    INSTANCE;
    private Resource instance;
    SomeThing() {
        instance = new Resource();
    }
    public Resource getInstance() {
        return instance;
    }
}

上面的类Resource是我们要应用单例模式的资源,具体可以表现为网络连接,数据库连接,线程池等等。
获取资源的方式很简单,只要 SomeThing.INSTANCE.getInstance() 即可获得所要实例。
单元素的枚举类型已经成为实现Singleton的最佳方法。–《Effective Java》

上一篇:20171207-bug日记


下一篇:java进阶-常用数据结构以及算法思想