1.单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。
即 不要让一个类承担过多的职责。(比如在Activity里,将文件读写、adapter、bean类都写在里面,如果要改这三者的其中一个,都需要修改这个Activity,此时就违背了该原则)
2.开放封闭原则:类、模块、函数等应该是可以扩展的,但是不可以修改。
即 对于扩展是开放的,对于修改是封闭的。(简单工厂模式违背了该原则,如果要增加需求,增加具体产品类的时候,就要修改具体工厂类中的方法,抽象工厂模式解决了这个问题)
3.里氏替换原则:所有引用基类(父类)的地方必须能透明地使用其子类的对象。
即 在软件中将一个基类对象替换成其子类对象,程序不会产生任何错误和异常,但反之则不成立。里氏替换原则是实现开放封闭原则的重要方式之一。
4.依赖倒置原则:高层模块不应该依赖低层模块,两者都应该依赖于抽象。抽象不应该依赖于细节,细节应该依赖于抽象。
即 抽象指接口或者抽象类,不能被直接实例化的
细节就是实现类,实现接口或继承抽象类,可以new产生对象的。
高层模块就是调用端;
低层模块就是具体实现类;
以抽象工厂模型 为例:
抽象:抽象产品类、抽象工厂类
细节:具体产品类、具体工厂类
高层模块:调用端(调用具体工厂类中的方法)
底层模块:具体实现类(调用具体产品类中的方法)
5.迪米特原则:一个软件实体应当尽可能少地与其他实体发生相互作用。
即 当其中一个模块发生修改时,就应该尽量少地影响其他模块。如果两个对象之间不必直接通信,就不应该发生任何直接的相互作用。如果一个对象需要调用另一个对象的某个方法,可以通过第三者转发调用,降低两个对象之间的耦合。(参考MVP模式中的Presenter)。
6.接口隔离原则:一个类对另一个类的依赖应该建立在最小的接口上。
即 建立单一接口,不要建立庞大臃肿的接口;尽量细化接口,接口中的方法尽量少。