之前对23个设计模式分类进行了总结,但是忽略了设计模式所设计的原则,这次针对设计模式的原则进行一个整理。
首先要提的是:设计模式原则的灵魂是面向接口,以及如何合理地运用接口
设计模式中的原则有:单一职责原则、里氏代换原则、依赖倒转原则、迪米特原则、开放-封闭原则。
一、单一职责
单质职责描述的是有且仅有一个原因引起类的变更。
为了达到这个目标,我们需要对类和业务逻辑进行拆分。划分到合适的粒度,让这些各自执行单一职责的类,各司其职。
实现“高内聚”(到让每个类尽量行使单一的功能)“低耦合”(类和类之间不会有过多冗余的联系)。
二、里氏代换
里氏代换原则一种比较好的理解方式是: 所有引用基类的地方必须能使用其子类的对象
(也可以理解为父类使用的地方可以完全用子类代替)
三、依赖倒转
依赖倒转一般表现在三个方面:
1.高层的模块不应该依赖于低层的模块,这两者都应该依赖于其抽象
2.抽象不应该依赖细节
3.细节应该依赖抽象
简单来讲高层次的类不应该依赖或耦合于低层次的类,这两者都应该通过相关的接口去实现。要面向接口编程,而不是面向实现编程。
四、迪米特
迪米特原则又被称为最少知道原则,在保证实现功能的前提下一个对象接触其他对象越少越好,也就是类之间的耦合度要低。
比如在生活中我们如果一昧的以交朋友的数量衡量自己的交际能力会让自己很累的,也会难以打理好复杂的人际关系。对于并不很外向的人,大多数情况下与自己有交集的朋友交往就可以了。
五、开放-封闭
开闭原则的表达就是字面的意思,对修改封闭,对扩展开放
在日常的代码编写工作中尽量去避免修改已经存在的代码,每一次修改就是一次错误的可能性,也意味着代码的封装性遭到了破坏,增加新的功能可以通过扩展的方式去实现。
做一个总结:首先原则不是死板的而是灵活的,在设计模式中有些原则其实是没有很好的符合,但是我们设计的工作中重要的是权衡利弊,掌握好尺度,并非死板的理论。原则可以说是23种设计模式的灵魂指导了设计模式。其实设计模式是一种思想,关键的还是怎样和业务结合起来。马克思的名言“光是思想力求成为现实是不够的,现实本身应当力求趋向思想”正说明了这个道理。