一、职责单一原则
二、里氏替换原则
三、接口隔离原则
四、依赖倒置原则
五、迪米特法则
六、组合\聚合复用原则
七、开闭原则
一、职责单一原则(SRP:Single responsibility principle)
定义:不要存在多于一个导致类变更的原因。俗的说,即一个类只负责一项职责。
问题由来:T负责两个不同的职责:职责P1,职责P2。当由于职责P1需求发生改变而需要修改类T时,有可能会导致原本运行正常的职责P2功能发生故障。也就是说职责P1和P2被耦合在了一起。
产生原因:没有任何的程序设计人员不清楚应该写出高内聚低耦合的程序,但是很多耦合常常发生在不经意之间, 其原因就是:职责扩散:因为某种原因,某一职责被分化为颗粒度更细的多个职责了
解决办法:遵守单一职责原则,将不同的职责封装到不同的类或模块中。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。
二、里氏替换原则(LSP:Liskov Substitution Principle)
定义1:如果对每一个类型为 T1的对象 o1,都有类型为 T2 的对象o2,使得以 T1定义的所有程序 P 在所有的对象 o1 都代换成 o2 时,程序 P 的行为没有发生变化,那么类型 T2 是类型 T1 的子类型。
定义2:所有引用基类的地方必须能透明地使用其子类的对象。
三、接口隔离原则(ISP:Interface Segregation Principle)
四、依赖倒置原则
五、迪米特法则
六、组合\聚合复用原则
七、开闭原则