设计模式七大原则之合成复用原则(Composite Reuse Principle)
合成复用原则(CRP:Composite Reuse Principle)又称为组合/聚合复用原则(CARP:Composition/Aggregate Reuse Principle,),该原则指出尽量使用合成/聚合,尽量不要使用类继承。
合成复用原则(CRP:Composite Reuse Principle)又称为组合/聚合复用原则(CARP:Composition/Aggregate Reuse Principle,),该原则指出尽量使用合成/聚合,尽量不要使用类继承。
迪米特法则(LOD:Law of Demeter/Demeter Principle),又叫最少知道原则(LKP:Least Knowledge Principle),即一个类对自己依赖的类知道的越少越好。
开闭原则 (OCP:Open Close Principle)是编程中最基础、最重要的设计原则。它指出,一个软件中的对象(类,模块,函数等等)应该对于扩展是开放的(对提供方),但是对于修改是封闭的(对使用方)。
里氏代换原则(LSP:Liskov Substitution Principle)指出:如果对每个类型为T1的对象o1,都有类型为T2的对象o2,使得以T1定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变化,那么类型T2是类型T1的子类型。
换句话说,所有引用基类的地方必须能透明地使用其子类的对象。对于子类而言,可以扩展父类的功能,但不能改变父类原有的功能。它包含以下4层含义:
依赖倒转原则(DIP: Dependence Inversion Principle)也说依赖倒置原则,包含三层含义:高层模块不应该依赖低层模块,两者都应该依赖其抽象;抽象不应该依赖细节;细节应该依赖抽象。依赖倒转(倒置)的中心思想就是面向接口编程。
接口隔离原则 (ISP: Interface Segregation Principle)有两种定义:客户端不应该依赖它不需要的接口;类间的依赖关系应该建立在最小的接口上。
单一职责原则(SRP:Single responsibility principle)又称单一功能原则,对于一个类而言,不应存在多于一个导致类变更的原因,否则类应该被拆分,也就是说一个类只负责一项职责。如果一个类承担的职责项过多,就等于把这些职责耦合起来,使其难维护,复用度低,缺乏灵活性,当需求发生变化时,一项功能职责的变动可能导致整个功能无法使用,因此在实际中开发中,我们应将类的功能职责粒度分解,其核心就是控制类的粒度大小、将对象解耦、提高其内聚性。