面向对象设计原则

1. 依赖倒置原则

原则定义: 高层模块不应该依赖底层模块,两者都依赖于抽象;抽象不应该依赖细节;细节应该依赖于抽象 。

image.png

2. 开放关闭原则

一个软件实体类,模块和函数应该对扩展开放,而对修改关闭,具体来说你应该通过扩展来实现变化,而不是通过修改原有的代码来实现变化,该原则是面向对象设计的最基本原则。
实现开闭原则的指导思想就是:

  • 抽象出相对稳定的接口,这部分应该不改动或者很少改动
  • 封装变化
image.png

3. 单一职责原则

一个类有且仅有一个职责,只有一个引起他变化的原因,其核心是解耦和高内聚

image.png

4 里氏替代原则

所有引用基类的地方必须透明的使用其子类的对象
简单来说,所有使用基类代码的地方,如果换成子类对象的时候还能够正常运行,则满足这个原则,否则就是继承关系有问题,应该废除两者的继承关系,这个原则可以用来判断我们的对象继承关系是否合理。


image.png

5. 接口隔离原则

不能强迫用户使用他们不使用的接口,简单来说就是客户端需要什么接口,就提供给它什么样的接口,其它多余的接口就不要提供,不要让接口变得臃肿,否则当对象一个没有使用的方法被改变了,这个对象也将会受到影响。接口的设计应该遵循最小接口原则


image.png
image.png

6.优先使用对象组合而不是类继承

合比继承拥有更多的灵活性。组合允许在运行时设置属性,并通过使用接口来实现,我们可以使用多态在类运行时改变类的行为,从而提供更好的接口实现。

7. 封装变化点

使用封装来创建对象之间的分界层,让设计这可以在分界层的一层进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合

8. 针对接口编程,而不是针对实现编程

  • 不将变量类型声明为某个特定的具体类,而是声明为某个接口。
  • 客户程序无需获知对象的具体类型,只需要知道对象所具有的接口
  • 减少系统中各部分的依赖关系,从而实现“高内聚、松耦合”的类型设计方案

你可能感兴趣的:(面向对象设计原则)