单例模式——创建型模式(一)
单例模式是一种创建型设计模式,让你能够保证一个类只有一个实例,并提供一个访问该实例的全局方法。
所有单例的实现都包含以下两个相同的步骤:
- 构造函数私有,防止其它对象使用单例类的
new
运算符 - 新建一个静态方法替代构造函数。该函数会调用私有构造方法来创建对象,并将其保存在一个静态成员变量中。此后所有的对于该函数的调用都将返回这一缓存对象。
伪代码
单例类
public class Singleton {
/**
* 静态成员变量缓存单例
*/
public static Singleton instance;
private String value;
public String getValue() {
return this.value;
}
/**
* 构造方法私有
* @param value value
*/
private Singleton(String value) {
this.value = value;
}
/**
* 静态方法替代构造函数
* @param value value
* @return Singleton
*/
public static Singleton getInstance(String value) {
// 初次调用时初始化
if (instance == null) {
instance = new Singleton(value);
}
// 返回缓存对象
return instance;
}
}
客户端
public class DemoSingleton {
public static void main(String[] args) {
Singleton king = Singleton.getInstance("king");
Singleton queen = Singleton.getInstance("queen");
System.out.println(king.getValue());
System.out.println(queen.getValue());
}
}
结果
可以看到,由于第一次调用时候单例类中缓存对象instance
中已经赋值,第二次调用直接返回此缓存对象,故两次的输出结果相同。