七种设计原则
单一设计原则:一个类实现一个功能,如果一个类实现了多个功能,下次修改其中一个功能的时候可能会导致其他功能引起错误。
注意事项和原则:
- 降低类的复杂度,提高类的可读性可维护性
- 降低由变更带来的风险
- 只有逻辑足够简单,才可以再代码级别违反;只有类中方法数量足够少,可以在方法级别保持单一职责原则
接口隔离原则:一个类对另外一个类的依赖(方法调用,方法形参)应该建立在最小的接口上(例:类A通过接口interface1作为方法形参,但是这个方法只会调用这个接口中的部分方法);我们应该将这个接口继续拆分
依赖倒转(倒置)原则:
- 高层模块不应该依赖底层模块,各个模块都应该依赖其抽象(抽象类,接口)
- 抽象不应该依赖细节(具体的实现类),细节应该依赖抽象
- 中心思想是面向接口编程,其目的是制定好规范,而不涉及具体的操作,把展现细节的任务交给他们的实现类去完成
里式替换原则:
- 所有引用基类的地方必须能透明的使用其子类的方法(在子类中尽量不要重写父类的方法)
- 在适当情况下,可以通过聚合,组合,依赖来解决问题
- 通常的做法是:原来的父类和子类都继承一个更基础的基类,原有的继承关系替换为聚合,组合,依赖;
开闭原则:
- 模块和函数应该对扩展开放(提供方),对修改关闭(使用方)
- 当软件需要变化的时候,尽量通过扩展
- 用抽象构建框架,用实现扩展细节
- 编程中遵循其他原则,设计模式的目的就是遵循开闭原则
迪米特法则:
- 一个对象应该对其他对象保持最少的了解
- 类与类的关系越密切,耦合度越高
- 一个类对自己依赖的类知道的越少越好(不管对于被依赖的类多复杂,都尽量将逻辑封装在类的内部,除了对外提供的public)
- 我们称出现的成员变量,方法参数,返回值为直接朋友;局部变量中的类不是;也就是说陌生的类不要以局部变量的形式出现在类的内部
- 核心是降低类之间的耦合,减少不必要的依赖
合成复用原则:尽量使用合成聚合的方式,而不是使用继承