我正在介绍 SOLID 设计原则,并尝试将单一职责原则和开闭原则与设计模式联系起来。
目前我有
- SRP:代理,外观
- OCP:战略、指挥
还有其他我应该包括的基本模式吗?
我正在介绍 SOLID 设计原则,并尝试将单一职责原则和开闭原则与设计模式联系起来。
目前我有
还有其他我应该包括的基本模式吗?
SOLID 原则是一个好的 OO 语言和框架的更多属性,而不是其他任何东西。它们不能轻易地转化为设计模式。相反,它们会影响设计模式中的好与坏。
通常,所有SOLID 原则都出现在每个设计模式的某个地方。如果所有 SOLID 原则都没有出现,那么您有办法改进设计模式。
单一职责实际上是封装加上继承和多态的某些方面。单一职责更多的是关于如何将问题分解为协作对象并定义这些对象的类的基本原则或原则。所有的设计模式都应该说明这一点。
同样,Open/Closed 是一种语言特性,通常通过继承来实现。但它可以通过猴子补丁来完成。所有的设计模式都应该说明这一点。
Liskov Substitution 通常也是一种语言特性。我们经常使用设计良好的多态类来实现这一点。有些人认为鸭式打字打破了这个原则,其他人说鸭式打字体现了它。有许多设计模式依赖于 Liskov Substitution。任何具有多态性的东西都会表现出里氏替换。
界面隔离可以是一种语言特性。Java 有它。Python——大多数人认为——不这样做。但是,您会注意到许多 Python 项目尝试使用超类和单元测试来形式化它们的接口定义。
依赖倒置(依赖于抽象)通常是一种语言特性。没有多少设计模式坚持这一点。然而,我们中的许多人喜欢使用 Java Collections 库中的抽象,以便我们可以在具体类中使用 Liskov Substitution。
我已经完成了相同的演示,并挑选了一些设计模式来展示它们如何应用这些原则。
我注意到,对于 LSP,除了 GOF 的两种设计模式外,其他所有设计模式都使用了替换。