单例模式

简介: 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_40254498/article/details/79133275 懒...
版权声明:本文为博主原创文章,未经博主允许不得转载。 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》

目录
相关文章
|
3月前
|
存储 设计模式 测试技术
单例模式
单例模式
|
设计模式 安全 Java
回顾一下单例模式
回顾一下单例模式
|
设计模式 缓存
我学会了,单例模式
单例模式属于创建型模式,这个类型的设计模式是将 对象的创建和使用解耦了,花式的去创建对象。
128 0
我学会了,单例模式
|
SQL 设计模式 安全
单例模式详解
单例模式详解
241 0
单例模式详解
|
XML 设计模式 安全
单例模式,真不简单
单例模式,真不简单
单例模式,真不简单
|
设计模式 Java
单例模式的应用(2)
单例模式的应用(2)
127 0
|
安全 Java 容器
单例模式的应用(3)
单例模式的应用(3)
170 0
|
容器
单例模式实现
1. 单线程可用 2. 使用final常量 3. 加锁构造 4. 方法级加锁 5. 静态内部类实现,多线程可用 6. 拒绝强行反射创建我
1096 0
|
存储
单例模式的理解
# 首先了解object类实例化对象时候使用new的时候发生了什么 # class Person(): # def __init__(self): # print('这是init方法') # # # a = Person() # 不重写object的new方法不采用...
777 0