六大设计原则总结
单一职责原则
概念
- 一个类只负责完成一个职责/功能
作用
-
- 提高类的内聚性
-
- 实现代码高内聚,低耦合
不满足的4中情况
-
- 类中代码、函数、行数过多
-
- 类依赖的其他类过多
-
- 私有方法过多
-
- 类中大量的方法都是集中操作类中的几个属性
开闭原则
概念
- 对扩展开放,对修改关闭
- 开闭原则并不是说完全杜绝修改,而是以最小的修改代码代价来完成新功能的开发
作用
-
- 新老逻辑解欧,需求发生改变不会影响老业务逻辑
-
- 改动成本最小,只需要追加新逻辑,不需要改老逻辑
-
- 提供代码的稳定性和可扩展性
如何做到开闭原则
-
锻炼顶层思维
- 扩展意识
- 封装意识
- 抽象意识
-
提高代码扩展性的方式
- 多态
- 依赖注入
- 面向接口编程
- 合理使用设计模式
里氏替换原则
概念
- 子类对象能够替换程序中父类对象出现的任何地方,并且保证原来程序的逻辑行为不变及正确性不被破坏
作用
-
- 为良好的继承定义类一个规范
-
- 提高代码健壮性,降低程序出错的可能性
里氏替换原则与多态区别
- 多态是面向对象编程的一大特性,也是面向对象编程语言的一种语法,它是一种代码实现的思路
- 里氏替换是一种设计原则,用来指导继承关系中子类该如何设计,子类的设计要保证在替换父类的时候,不改变原有程序的逻辑及不破坏原有程序的正确性
接口隔离原则
概念
- 一个类对另一个类的依赖应该建立在最小的接口上,要为各个类建立它们需要的专用接口,而不要试图去建立一个很庞大的接口供所有依赖它的类去调用
作用
-
- 提高系统的灵活性和可维护性
-
- 减少项目工程中的代码冗余
接口隔离与单一职责原则的区别
- 单一职责原则注重的是职责,而接口隔离原则注重的是接口依赖的隔离
- 单一职责原则主要是约束类,它针对的是程序中的实现和细节; 接口隔离原则主要约束接口,主要针对抽象和程序整体框架构建
依赖倒置原则
概念
- 高层模块不应该依赖与底层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象
作用
- 减少类间的偶合性,提高系统的稳定性
- 降低并行开发引起的风险
- 提高代码的可读性和可维护性
依赖倒置、控制反转、依赖注入
- 依赖倒置:是一种通用的软件设计原则,主要用来指导框架层面的设计
- 控制反转:与依赖倒置有一些相似,它也是一种框架设计常用的模式,但并不是具体的方法
- 依赖注入:是实现控制反转的一个手段,它是一种具体的编码技巧
迪米特法则
概念
- 不应该直接依赖关系的类之间,不要有依赖; 有依赖关系的类之间,尽量只依赖必要的接口
作用
- 如果两个软件实体无需直接通信,那么就不应该发生直接的互相调用,可以通过第三方转发该调用,其目的是降低类之间的偶合度,提高模块的相对独立性
使用注意
- 过度使用迪米特法则会是系统产生大量的中介类,从而增加系统复杂度,使模块的通信效率降低,所以在采用迪米特法则时需要反复权衡,确保高内聚和低耦合的同时,保证系统的结构清晰