本文总结了软件设计中的 八大设计原则,它们是实现高内聚、低耦合、可维护软件架构的核心。
- 当代码出现 Bad Smell 时,灵活的使用设计原则重构代码
高层模块不应该依赖低层模块,二者都应该依赖于抽象。 抽象不应该依赖于实现细节,实现细节应该依赖于抽象。
- 稳定依赖稳定,变化依赖稳定。
- 通过依赖抽象类或接口,消除高层与底层的直接耦合。
对扩展开放,对修改封闭。
- 类模块应当易于扩展,难以被修改。
- 使用抽象和多态机制,让系统在不改动已有代码的前提下支持新功能。
一个类应该仅有一个引起它变化的原因。
- 每个类只负责一个功能点。
- 功能变化导致的修改只应影响一个类。
子类必须能够替换其基类,行为保持一致。
- 子类是一种父类(IS-A)关系。
- 不破坏程序原有的正确性。
不要强迫客户依赖他们不使用的方法。
- 接口应小而精,不冗杂。
- 拆分庞大的接口,使得实现类只依赖真正需要的接口。
组合优于继承。
- 继承属于白箱复用,耦合高、封装性差。
- 组合属于黑箱复用,更灵活、耦合低。
- 依赖于接口进行组合,有助于变化隔离和模块解耦。
封装变化是实现稳定架构的关键。
- 将易变因素隔离在一个模块或类中。
- 创建模块边界,使修改局部化,不影响其他部分。
多用接口(抽象),少依赖具体类。
- 面向接口而非实现编程,减少依赖,增强灵活性。
- 利于后期替换、测试、扩展,实现松耦合设计。
原则编号 | 名称 | 关键词 |
---|---|---|
DIP | 依赖倒置 | 抽象优先 |
OCP | 开放封闭 | 可扩展,不修改 |
SRP | 单一职责 | 一个原因引起变化 |
LSP | 里氏替换 | 子类替代父类 |
ISP | 接口隔离 | 小接口,少依赖 |
PCoI | 组合 > 继承 | 黑箱复用 |
EVoC | 隔离不稳定点 | 模块化 |
PoI | 编程抽象 | 降耦合 |
🧩 将这些原则融入实际编码实践,有助于构建灵活、可扩展、可维护的系统。