1. 开闭原则,对扩展开放,对修改关闭
意思是,通过接口和抽象类,将算法、策略、第三方程序等组件方法设计为热拔插的方式,减少对客户端代码的修改。
此类原则偏向扩展,较典型的设计模式有:工厂模式、抽象工厂模式、建造者模式、适配器模式、组合模式、装饰器模式、外观模式、代理模式、命令模式、中介者模式、策略模式、模板模式。
2.里氏替换原则
里氏替换原则是麻省理工学院的Mrs Liskov(译为里氏)提出来的,意思是所有引用基类的地方,必须能使用其子类的对象来替换。这就要求我们在使用继承时,派生类仅用于扩展新的方法行为,尽量不要覆盖到之后破坏基类的现有方法,就算覆盖,也要保证覆盖后的方法和基类的方法可以实现相同的功能。
3.依赖倒置原则
针对接口编程,依赖于抽象而不依赖于具体。
4.接口隔离原则
举个例子,一个存储系统,包括存储设备的连接、存储文件的读写、存储状态的监控等操作,这时,我们建议将这些操作按类别定义多个隔离的接口,相比于定义单个接口处理所有操作,它降低了类之间的耦合度。它强调降低依赖,降低耦合。
5.迪米尔原则
迪米尔原则源自于美国东北大学一个名为“Demeter”的研究项目,又称最少知道原则,主旨是:一个实体应当尽量少地与其他实体之间发生相互作用,使得系统功能模块相对独立。
它还有更具体的解释,它倡导对象应该只和朋友说话,朋友包括对象本身、对象方法参数、对象成员、集合类对象成员中的其它对象、当前对象创建的对象,不和其它陌生人直接说话。
它要求我们通过引入一个合理的第三者来降低现有对象之间的耦合度。较典型的设计模式有:桥接模式、组合模式、外观模式、代理模式、责任链模式、观察者模式。
6.合成复用模式
合成复用原则是指:尽量使用合成/聚合的方式,而不是使用继承。较典型的设计模式有代理模式、组合模式。