2020-11-18 单例模式

概念

单例模式:是一种对象创建型模式,用来确保程序中一个类最多只有一个实例,并提供访问这个实例的全局点。

单例模式的解决方案

  • 隐藏类的构造方法,用private修饰符修饰构造方法.
  • 定义一个public的静态方法(getInstance()) ,返回这个类唯一静态实例。

双重检查的单例模式


public class Singleton {  
    private volatile Singleton instance = null;   
    public Singleton getInstance() {  
        if (instance == null) {  
            synchronized(this) {  
                if (instance == null) {  
                    instance = new Singleton();  
                }  
            }  
        }  
        return instance;  
    }  
}  

关键字volatile 保证多线程下的单例:原因:https://blog.csdn.net/shadow_zed/article/details/79650874
原理:https://blog.csdn.net/anjxue/article/details/51038466?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control
推荐方法:

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

你可能感兴趣的:(2020-11-18 单例模式)