软件设计原则
# 设计原则 SOLID
https://zh.wikipedia.org/wiki/SOLID_(面向对象设计) (opens new window)
英文 | 中文 | 概念 |
---|---|---|
S - Single responsibility principle | 单一职责 | 认为对象应该仅具有一种单一功能的概念。 |
O - Open / Closed principle | 开闭原则 | 认为“软件体应该是对于扩展开放的,但是对于修改封闭的”的概念。 |
L - Liskov Substitution principle | 里氏替换原则 | 认为“程序中的对象应该是可以在不改变程序正确性的前提下被它的子类所替换的”的概念。 |
I - Interface Segregation principles | 接口分离原则 | 认为“多个特定客户端接口要好于一个宽泛用途的接口” 的概念。 |
D - Dependency inversion principle | 依赖倒置 | 认为一个方法应该遵从“依赖于抽象而不是一个实例” 的概念。依赖注入是该原则的一种实现方式。 |
- 软件设计原则是前人对于软件开发经验中总结出来的软件框架设计指导。符合软件设计原则的代码更易于别人阅读和理解,更重要的是易于后期维护、扩展
- 代码是否符合软件设计原则,需要结合实际,从整个项目角度去思考,不能只看局部
- 在工程开发中,符合软件设计原则的代码开发、维护的成本更低,效率更高,是敏捷项目开发的基础。只有软件设计本身是敏捷的,才能支撑项目快速迭代
# 单一职责(SRP)
- 一个模块的组成元素之间的功能相关性。
- 一个类,只能有一个引起它的变化的原因。
违反单一职责的代码脆弱,难以移植。
# 开闭原则 (OCP)
对扩展开放,对修改关闭,不需要修改之前的代码就可以实现新的功能。
合理的使用设计模式,面向接口编程,在上层框架设计中定义好程序执行流程,通过增加实现类来扩展系统功能。
# 里氏替换 (LSP)
- 若对每个类型 T1 的对象 o1,都存在一个类型 T2 的对象 o2,使得在所有针对 T2 编写的程序 P 中,用 o1 替换 o2 后,程序 P 的行为功能不变,则 T1 是 T2 的子类型。
- 简言之:派生类(子类)对象可以在程序中代替其基类(父类)对象。
LSP 通常作为判断继承是否合理的依据。
# 接口分离原则 (ISP)
不应该强迫客户程序依赖它们不需要的方法。
如果一个类中包含了很多个方法,同时这些方法都具有相关性,不好分离,可以将这些方法定义成多个接口,实现类去实现多个接口,客户程序面向他们相关的接口编程,从而屏蔽掉其他不需要的方法。
# 依赖倒置 (DIP)
上层不依赖下层,下层也不依赖上层,他们同时都依赖一个接口,但是接口放在上层中。
Last Updated: 2024/04/23, 01:30:37