大部分情况下,我们把类的构造器设置成public权限,允许创建多个对象。
如果一个类始终只能允许创建一个对象,则需要用private修饰该类的构造器,将构造器隐藏起来,并提供给外界一个唯一的public访问点,用于外部创建唯一的对象。也就是单例类。
因为在调用该 public 方法之前,肯定是没有对象的,所以调用的时候肯定是类调用,注意需要用 static修饰该 public 方法。
该类需要使用一个成员变量来缓存以前创建过的对象,因为要被static getInstance方法调用,所以必须用 static 修饰。
class Singleton {
//使用一个变量来缓存曾经创建的实例
private static Singleton instance;
//对构造器使用 private修饰,隐藏构造器
private Singleton() {}
//提供一个外界访问的入口点,用static修饰
//因为调用该方法之前,没有对象,只能通过类来调用
public static Singleton getInstance() {
if(instance == null) {
instance = new Singleton();
}
return instance;
}
}
public class SingletonTest {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
System.out.println(s1 == s2); //将输出true
}
}