个人博客:打开链接
单例模式的定义
单例模式(Singleton Pattern)是很简单的模式,定义为:
Ensure a class has only one instance, and provide a global point of access to it.
确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
我是皇帝我独苗
单例模式最典型的例子就是古时候的皇帝,有且仅有一个。皇帝每天要上朝接待臣子,处理政务。所以皇帝和臣子的UML类图为:
为了防止单例对象通过复制、反射等方式被创建,我们把构造函数设置成private私有访问权限。
皇帝类:
public class Emperor {
//初始化一个皇帝
private static final Emperor emperor = new Emperor();
private Emperor(){
//世俗和道德约束你,目的就是不希望产生第二个皇帝
}
public static Emperor getInstance(){
return emperor;
}
//皇帝发话了
public static void say(){
System.out.println("我就是唯一的皇帝!");
}
}
通过定义一个私有访问权限的构造函数,避免被其他类new出来一个对象,而 Emperor自己则可以new出来一个对象,其他类对该类的访问都可以通过getInstance获得同一个对象。
皇帝有了,臣子要出场:
public class Minister {
public static void main(String[] args){
for(int day = 0; day <3; day++){
Emperor emperor = Emperor.getInstance();
emperor.say();
}
}
}
臣子参拜换地的运行结果为:
我就是唯一的皇帝!
我就是唯一的皇帝!
我就是唯一的皇帝!
由此可见,三天参加的皇帝是同一个人。这就是单例模式。是不是很简单?