《Android 源码设计模式解析与实战》学习笔记

1 面向对象的六大原则

  • 单一职责原则
    英文名称:Single Responsibility Principle,缩写SRP。定义:对于一个类而言,应该仅有一个引起它变化的原因。
  • 开闭原则
    英文名称:Open Close Principle,缩写OCP。定义:软件中的对象(类、模块、函数等)应该对于扩展是开放的,对于修改是封闭的。
  • 里氏替换原则
    英文名称:Liskov Substitution Principle,缩写LSP。定义:所有引用父类的地方必须能够透明地使用其子类的对象。
  • 依赖倒置原则
    英文名称:Dependency Inversion Principle,缩写DIP。定义:通过高层次的模块不依赖低层次的模块的实现细节达到解耦的目的。
  • 接口隔离原则
    英文名称:Interface Segregation Principle,缩写ISP。定义:类间的依赖关系应该建立在最小的接口上。
  • 最少知识原则
    英文名称:Least Knowledge Principle,缩写LKP。定义:一个对象应该对其他对象有最少的了解。

2 单例模式

单例模式须确保线程安全、防止反序列化导致重新生成实例。

常用的实现方式如下:

  • Double CheckLock (DCL)
public class Singleton {
    private static Singleton sInstance;

    private Singleton() {

    }

    public static Singleton getInstance() {
        if (sInstance == null) {
            synchronized (Singleton.class) {
                if (sInstance == null) {
                    sInstance = new Singleton();
                }
            }
        }

        return sInstance;
    }

}

优点:延迟加载,减少了同步开销
缺点:高并发环境下有很少概率的缺陷导致单例模式失效

  • 静态内部类单例模式
public class Singleton {

    private static class SingletonHolder {
        private static final Singleton sInstance = new Singleton();
    }

    private Context mContext;

    private Singleton() {

    }

    public static Singleton getsInstance() {
        return SingletonHolder.sInstance;
    }

    public Singleton init(Context context) {
        if (context != null && mContext == null) {
            mContext = context.getApplicationContext();
        }
        return this;
    }
}

优点:延迟加载,线程安全,推荐使用的单例模式

3 Builder模式

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值