什么是设计原则
就是帮助你在设计的时候 提供你一个思路一个好的方案的原则。
目的: 开发完成需求 完成项目
手段: 运用良好的设计原则与设计模式支持
并不是说 一定要设计按照原则来,再合适的时间内用合适的设计原则,进行合适的设计,完成目标。这是最重要的
设计原则 是一种参考,像说明书一样。给你个思路。
哪些设计原则,设计为了实现哪些情况
- 开闭原则 OCP 应对封装继承:不修改底层封装代码,扩展应对继承延申,达到 复用
- 里氏替换 LSP 应对封装继承:不影响底层封装含义,扩展避免重写重载,到达 复用
- 单一职责 SRP 应对 类本身:定位清晰,不影响别的职责达到解耦
- 接口分离 ISP 应对 接口本身:定位清晰,不影响别的接口达到解耦
- 依赖倒置 DIP 应对 细节与抽象 聚焦共同抽象一处注入实现 达到高内聚
- 合成复用 CRP 应对 继承或组装接口:整合所需关联行为 达到 复用/高内聚
- 迪米特 LoD 应对 类与类少关联/关联处的细节与抽象 达到解耦/高内聚
小结
好的项目都在 追求着 低耦合 高内聚 高可用 的 原则
低耦合 是在 与本身无关或关联少的点上做文章
比如 单一职责/接口分离
本身业务内或者与其他业务有关联的地方就尽量做到 高内聚
比如 依赖倒置
在项目后期维护中 必须考虑的 高可用
比如 开闭原则/里氏替换
合成复用 是嫌弃 开闭原则/里氏替换 ,所以利用 依赖倒置原则 想法来 高内聚解决关联性复杂问题,出现 复用/高内聚的 组合方案
迪米特 是 不能完全 解耦类与类,不得已 利用 依赖倒置原则 想法来 高内聚解决关联性复杂问题 出现 解耦/高内聚 的组合方案
所以 合成复用 和 迪米特 共同点就是 类与类之间有些许关联
差别就是 合成复用 更像是 子类父类 之间的关联 不需要中介类
迪米特 是 父类 与 父类之间的关联 需要中介类处理