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() ;
}