意图
保证一类仅有一个实例,并提供一个访问他的全局访问点
结构
其中:
Singleton指定一个Instance操作,允许客户访问它的唯一实例,Instance是一个类操作;可能负责创建他自己的唯一实例。
适应性
当类只能有一个实例而且客户可以从一个众所周知的访问点访问它时。
当这个唯一示例应该是通过子类化可扩展的,并且客户无须更改代码就能使用一个扩展的实例时。
代码示例
public class Singleton {
private static Singleton instance;
private Singleton() {
// 私有构造器,防止外部实例化
}
public static Singleton getInstance() {
if (instance == null) {
synchronized (Singleton.class) {
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
// 业务逻辑
public void doSomething() {
// ...
}
}