android面试学习-学到哪里记到哪里(三)

127 阅读1分钟

设计模式

  • 创建型: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;
    }
}