设计模式六大原则:
单一职责原则:一个类只负责一项职责。
开闭原则:一个类对于扩展是开放的,对于修改是封闭的。
里氏替换原则:所有引用父类的地方必须能透明地使用其子类的对象。
依赖倒置原则:高层次的模块不依赖于低层次模块的具体实现细节。
接口隔离原则:类之间的依赖关系应该建立在最小的接口上。
迪米特原则:一个对象应该对其他的对象有最少的了解。
常见设计模式:
单例模式
懒汉式
//懒汉式,线程安全
public class Singleton {
private static Singleton instance;
private Singleton (){}
public static synchronized Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
饿汉式
//利用类加载机制,线程安全
public class Singleton {
private static Singleton instance = new Singleton();
private Singleton (){}
public static Singleton getInstance() {
return instance;
}
}
//枚举
public enum Singleton {
INSTANCE;
public void whateverMethod() {
}
}
观察者模式
定义
又称为发布/订阅模式。定义了对象之间的一对多的关系,其实就是1对n,当“1”发生变化时,“n”全部得到通知,并更新。
实例
在Android中我们往ListView添加数据后,都会调用Adapter的notifyDataChanged()方法,通知ListView的每个Item,数据源发生了变化,请各位Item重新刷新一下。
Android中的广播也是观察者模式的体现。
工厂模式
简单工厂模式
简单工厂模式就是由一个工厂类根据传入的参数决定创建哪一种的产品类。可以说是工厂方法的一种。
工厂方法模式
定义一个创建对象的接口,让子类决定实例化哪个类。
Android在getSystemService()方法中就是用到了工厂模式,他就是根据传入的参数决定创建哪个对象
抽象工厂模式
为创建一组相关或者是相互依赖的对象提供一个接口,而不需要制定他们的具体类。
抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。
责任链模式
将可以处理请求对象连成一条链,并沿这条链传递该请求,直到有对象处理它为止。
Android中的事件分发机制。