《大话设计模式》阅读笔记和总结。原书是C#编写的,本人用Java实现了一遍,包括每种设计模式的UML图实现和示例代码实现。
目录:设计模式
Github地址:DesignPattern
定义:单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。
UML图:
代码实现:
Singleton类,定义一个getInstance操作,允许客户访问它的唯一实例。
public class Singleton {
private static Singleton instance;
// 构造方法private,这就堵死了外界利用new创建此类实例的可能
private Singleton(){}
// 获取本类实例的唯一全局访问点
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
客户端代码
public class Main {
public static void main(String[] args) {
Singleton s1 = Singleton.getInstance();
Singleton s2 = Singleton.getInstance();
if (s1 == s2) {
System.out.println("两个对象是相同的实例");
}else{
System.out.println("两个对象是不同的实例");
}
}
}
运行结果
两个对象是相同的实例
线程安全的单例模式
public class SSingleton {
private volatile static SSingleton singleton;
private SSingleton() {
}
public static SSingleton getInstance(){
if (singleton == null) {
synchronized (Singleton.class) {
if (singleton == null) {
singleton = new SSingleton();
}
}
}
return singleton;
}
}