目录
前言
设计模式的目的
编写时面临耦合性,内聚性 可维护性 可扩展性 重用性 灵活性等的需求。设计模式为了让程序,具有更好的
- 代码重用性 相同功能的代码 不用多次编写
- 可读性 编程规范性,便于其他人阅读和理解
- 可扩展性 当需要增加新的功能时 非常方便
- 可靠性 当我们增加新的功能后,对原来的功能没有影响
- 使程序呈现高内聚 低耦合的特性
一、单一职责原则(SRP)是什么?
一个类或者模块只负责完成一个职责(或者功能)。
- 降低类的复杂度,一个类只负责一项职责
- 提高类的可读性,可维护性
- 降低变更引起的风险
二、开闭原则(OCP)是什么?
在 23 种经典设计模式中,大部分设计模式都是为了解决代码的扩展性问题而存在的,主要遵从的设计原则就是开闭原则。 对扩展开放、修改关闭
为了尽量写出扩展性好的代码,我们要有扩展思想、抽象思想、封装思维。
三、里式替换原则(LSP)是什么?
降低原来继承高耦合,可移植性差
- 如果对每个类型为A1的对象a1,都有类型为A2的对象a2 使得以A1定义的所有程序P在所有的对象a1换成a2时 程序p的行为没有发生变化,那么类型A2是类型A1的子类型。大致就是在引用基类的地方必须能透明地使用其子类的对象
- 在使用继承时,在子类中尽量不要重写父类的方法
- 继承实际上让两个类的耦合性增强了,在适当的情况下,可以通过聚合,组合,依赖来解决问题
四、接口隔离原则(ISP)是什么?
客户端不应该被强迫依赖它不需要的接口。其中的“客户端”,可以理解为接口的调用者或者使用者。客户端不应该依赖它不需要的接口,即一个类对另一个类的依赖应该建立在最小的接口上
五、依赖反转原则(DIP)是什么?
- 低层模块尽量都要有抽象类或接口,或者两者都有 程序稳定性更好
- 变量的声明类型尽量是抽象类或接口,这样我们的变量引用和实际对象间,就存在一个缓冲层,利于程序扩展和优化
- 继承时遵循里氏替换原则
六、合成复用原则是什么?
- 找出应用中可能需要变化之处,把他们独立出来,不要和那些不需要变化的代码混在一起
- 针对接口编程 而不是针对实现编程
- 为了交互对象之间的松耦合而设计
KISS 原则就是保持代码可读和可维护的重要手段。代码足够简单,也就意味着很容易读懂,bug 比较难隐藏。
YAGNI原则要去设计当前用不到的功能;不要去编写当前用不到的代码。实际上,这条原则的核心思想就是:不要做过度设计。
七、迪米特法则是什么?
- 降低类之间的耦合
- 由于每个类都减少了不必要的依赖,一次该法则只是要求降低类间(对象间)耦合关系 ,并不是要去完全没有依赖关系
总结
开闭原则 很重要