Android常用设计模式(一、单例模式)

今天学习并分享第一种模式,单例模式

单例模式的三种形式:

  1. 饿汉式
  2. 懒汉式
  3. 双重锁模式

接下来讲解第一种,由于我在代码里面都已经解析了, 就不继续啰嗦了

  • 饿汉式:由于会new多个,所以用得较少

public class Singleton1 {
    /**
     * 饿汉式:需要的时候就new
     * */
    //提供一个内部实例
    public static final Singleton1 instance = new Singleton1();
    private Singleton1(){}
    //提供静态外部调用方法
    public static Singleton1 getInstance(){
        return instance;
    }
}
  •  
  • 懒汉式 :较为常用

public class Singleton2 {

    /**
     * 懒汉式:比较常用的模式
     * */
    private static Singleton2 instance = null;
    private static synchronized Singleton2 getInstance(){
        if(instance == null){
            return new Singleton2();
        }
        return instance;
    }
}
  •  双重锁模式:比懒汉式少点

public class Singleton3 {
    private volatile static Singleton3 instance = null;

    private Singleton3() {
    }
    /**
     * 提供外部调用方法获取实例,通过双重if判断,避免多次同步,只获取第一次对象的时候才同步
     * 优点:防止其他对象实例化其自己的 Singleton3 对象的副本,确保唯一性
     * 弊端:多了一层判断实例,增大了开销
     * */
    public static Singleton3 getInstance() {
        if (instance == null) {
            synchronized (Singleton3.class) {
                if (instance == null) {
                    instance = new Singleton3();
                }
            }
        }
        return instance;
    }
}

 最后贴上我的代码

https://github.com/sdgSnow/DesignPattern

猜你喜欢

转载自blog.csdn.net/lovelixue/article/details/81940996