如果一个类始终只能创建一个实例,那这个类就是单例类
在一些特殊的场景下,要求不允许自由创建该类对象,只允许创建一个对象,应该把该类的构造器(私有化)隐藏起来,此外,用一个类变量(就是static修饰的变量)来保存曾经创建过的单例对象
/**
* @author 张家琛
* @version 1.0
* @date 2023/1/23 1:21
* 全世界只有一个中国!
* 单例类就是始终只能创建唯一的一个实例
*/
public class SingletonChina {
//类变量来缓存曾经创建的实例
private static SingletonChina China;
//将构造器私有化,只能内部调用
private SingletonChina() {
}
//对外暴露一个静态方法,用于返回Singleton实例
public static SingletonChina getChina() {
//自定义控制,保证只产生一个China对象
if (China == null) {
China = new SingletonChina();
}
return China;
}
}
class singletonTest {
public static void main(String[] args) {
SingletonChina China1 = SingletonChina.getChina();
SingletonChina China2 = SingletonChina.getChina();
SingletonChina China3 = SingletonChina.getChina();
System.out.println(China1 == China2);
System.out.println(China2 == China3);
}
}
运行结果:只判断地址就行,在此只用了==做判断,运行结果: