[Java]构造方法私有化-->单例模式

时间:2023-02-16 22:45:08
  • 首先,对构造方法进行封装。
class Singleton{
private Singleton(){}
public void print(){
System.out.println("Hello World!!!");
}
}
public class SingleDemo02{
public static void main(String args[]){
Singleton s1=null;
s1=new Singleton(); //错误,无法实例化
s1.print();
}
}
  • 因外部无法调用构造方法,尝试内部调用实例化为instance。
class Singleton{
static Singleton instance=new Singleton();
private Singleton(){
}
public void print(){
System.out.println("Hello World!!!");
}
}
public class SingleDemo04{
public static void main(String args[]){
Singleton s1=null;
s1=Singleton.instance; //类中的属性未封装,直接访问了
s1.print();
}
}
  • 声明静态方法访问静态属性instance。
class Singleton{
private static Singleton instance=new Singleton();
private Singleton(){
}
public void print(){
System.out.println("Hello World!!");
}
public static Singleton getSingleton(){
return instance;
}
}

public class SingleDemo05{
public static void main(String args[]){
Singleton s1=Singleton.getSingleton();//访问静态方法,取得对象实例
Singleton s2=Singleton.getSingleton();
Singleton s3=Singleton.getSingleton();
s1.print();
s2.print();
s3.print();
}
}

–>单例模式:
无论程序怎样运行,Singleton永远只会有一个实例化对象存在。
(应用:Windows中的回收站程序)