设计模式
- 创建型:1. 工厂方法 2. 抽象工厂 3. 单例 4. 建造者 5. 原型 6. 多例
- 结构型:1.适配器 2.装饰器 3.代理 4.外观 5.桥接 6.组合 7.享元
- 行为型:1.策略模式 2.模块方法模式 3.观察者 4.迭代器 5.责任链 6.命令 7.备忘录 8.状态 9.访问者 10.中介者 11.解析器
Double Check Lock(DCL)单例
优点:既能保证线程安全,且单例对象初始化后调用getInstance不进行同步锁,资源利用率高 缺点:第一次加载稍慢,由于Java内存模型一些原因偶尔会失败,在高并发环境下也有一定的缺陷,但概率很小
public class SingletonDCL {
private volatile static SingletonDCL instance = null;
public static SingletonDCL getInstance() {
if (instance == null) {
synchronized (SingletonDCL.class) {
if (instance == null) {
instance = new SingletonDCL();
}
}
return instance;
}
}