设计模式是在特定环境下人们解决某类重复出现问题的一套成功或有效的解决方案。
代码质量好坏评判标准:
- 可维护性(maintainability)
- 可读性(readability)
- 可扩展性(extensibility)
- 灵活性(flexibility)
- 简洁性(simplicity)
- 可复用性(reusability)
- 可测试性(testability)
如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。 面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。
| 设计原则 | 定义 |
|---|---|
| 单一职责原则(Single Responsibility Principle, SRP) | 一个类只负责一个功能领域中的相应职责 |
| 开闭原则(Open-Closed Principle, OCP) | 软件实体应对扩展开放,而对修改关闭 |
| 里氏代换原则(Liskov Substitution Principle, LSP) | 所有引用基类对象的地方能够透明地使用其子类的对象 |
| 依赖倒转原则(Dependence Inversion Principle, DIP) | 抽象不应该依赖于细节,细节应该依赖于抽象 |
| 接口隔离原则(Interface Segregation Principle, ISP) | 使用多个专门的接口,而不使用单一的总接口 |
| 合成复用原则(Composite Reuse Principle, CRP) | 尽量使用对象组合,而不是继承来达到复用的目的 |
| 迪米特法则(Law of Demeter, LoD) | 一个软件实体应当尽可能少地与其他实体发生相互作用 |
GoF的23种 + "简单工厂模式" = 24种。