单例设计模式

package test;
//单利模式
public class demo1 {
    public static void main(String[] args) {
        /*Singleton s1 = Singleton.s;  //成员变量被私有
        Singleton s2 = Singleton.s;
        
        System.out.println(s1==s2);*/
        Singleton s1 = Singleton.getInstance();
        Singleton s2 = Singleton.getInstance();
        
        System.out.println(s1==s2);
    }
}
//饿汉式
/*class Singleton{
    //私有构造方法
    private Singleton(){}
    //创建本类的对象 私有成员变量
    private static Singleton s = new Singleton();
    //对外提供get方法
    public static Singleton getInstance(){
        return s;
    }
}*/
//懒汉式   单例的延迟加载模式  多线程访问会有安全隐患
/*class Singleton{
    //私有构造方法
    private Singleton(){}
    //私有成员变量
    private static Singleton singleton  ;
    //提供get 方法
    public static Singleton getInstance() {
        if(singleton == null){
            singleton = new Singleton();
        }
        return singleton;
    }
}*/

//饿汉式和懒汉式区别
//饿汉式是空间换时间,懒汉式是时间换空间
//饿汉式不会创建建多个对象,懒汉式有可能创建多个对象
class Singleton{
    //私有构造方法
    private Singleton(){}
    //私有成员变量
    public  static  final Singleton singleton = new Singleton() ;
}
原文地址:https://www.cnblogs.com/hudj/p/7416298.html