1.用private把构造器隐藏起来,创建实例时,不能通过构造器,而是getInstance方法,s1==s2输出true
class Singleton
{
//缓存曾经创造的实例
private static Singleton instance;
//private 隐藏该构造器
private Singleton(){
System.out.println("123");
}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
public static void main(String[] args){
//创建对象不能通过构造器,而是getInstance方法
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1==s2); //true
}
}
2. 用new去创建,而不是getInstance,则 s1==s2 输出flase
class Singleton
{
//缓存曾经创造的实例
private static Singleton instance;
//private 隐藏该构造器
private Singleton(){
System.out.println("123");
}
public static Singleton getInstance(){
if(instance == null){
instance = new Singleton();
}
return instance;
}
public static void main(String[] args){
//创建对象不能通过构造器,而是getInstance方法
Singleton s1 = Singleton.getInstance();
Singleton s2 = new Singleton(); //通过构造器创建
System.out.println(s1==s2); //false
}
}