1. 依赖倒置原则
原则定义: 高层模块不应该依赖底层模块,两者都依赖于抽象;抽象不应该依赖细节;细节应该依赖于抽象 。
image.png2. 开放关闭原则
一个软件实体类,模块和函数应该对扩展开放,而对修改关闭,具体来说你应该通过扩展来实现变化,而不是通过修改原有的代码来实现变化,该原则是面向对象设计的最基本原则。
实现开闭原则的指导思想就是:
- 抽象出相对稳定的接口,这部分应该不改动或者很少改动
- 封装变化
3. 单一职责原则
一个类有且仅有一个职责,只有一个引起他变化的原因,其核心是解耦和高内聚
image.png4 里氏替代原则
所有引用基类的地方必须透明的使用其子类的对象
简单来说,所有使用基类代码的地方,如果换成子类对象的时候还能够正常运行,则满足这个原则,否则就是继承关系有问题,应该废除两者的继承关系,这个原则可以用来判断我们的对象继承关系是否合理。
image.png
5. 接口隔离原则
不能强迫用户使用他们不使用的接口,简单来说就是客户端需要什么接口,就提供给它什么样的接口,其它多余的接口就不要提供,不要让接口变得臃肿,否则当对象一个没有使用的方法被改变了,这个对象也将会受到影响。接口的设计应该遵循最小接口原则
image.png image.png
6.优先使用对象组合而不是类继承
合比继承拥有更多的灵活性。组合允许在运行时设置属性,并通过使用接口来实现,我们可以使用多态在类运行时改变类的行为,从而提供更好的接口实现。
7. 封装变化点
使用封装来创建对象之间的分界层,让设计这可以在分界层的一层进行修改,而不会对另一侧产生不良的影响,从而实现层次间的松耦合
8. 针对接口编程,而不是针对实现编程
- 不将变量类型声明为某个特定的具体类,而是声明为某个接口。
- 客户程序无需获知对象的具体类型,只需要知道对象所具有的接口
- 减少系统中各部分的依赖关系,从而实现“高内聚、松耦合”的类型设计方案
网友评论