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;
    private static synchronized Singleton2 getInstance(){
        if(instance == null){
            instance = new Singleton2();
            return instance;
        }
        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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值