您的位置:首页 > 移动开发 > Android开发

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

2016-09-15 11:52 411 查看

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模式

将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息