我正在介绍SOLID设计原则,我正在努力将单一责任原则和开放式原则联系起来设计模式。
目前我有
我应该包括其他基本模式吗?
答案 0 :(得分:21)
SOLID原则是一个优秀的OO语言和框架的更多属性,而不是其他任何东西。他们不会轻易地转化为设计模式。相反,它们在设计模式中影响好与坏。
通常,SOLID原则的全部会出现在每个设计模式中。如果没有出现所有SOLID原则,您可以改进设计模式。
单一责任实际上是封装以及继承和多态的某些方面。单一责任更多是如何将问题分解为合作对象并定义这些对象的类的基本原则或原则。所有设计模式都应该说明这一点。
同样,Open / Closed是一种语言功能,通常通过继承实现。但它可以通过monkeypatching完成。所有设计模式都应该说明这一点。
Liskov Substitution也是一种语言特色。我们经常使用设计良好的多态类来实现它。有些人认为鸭子打字打破了这个原则,其他人说鸭子打字表明它。有许多设计模式依赖于Liskov Substitution。任何具有多态性的东西都将展示Liskov Substitution。界面隔离可以是语言功能。 Java有它。 Python - 大多数人认为 - 不会这样做。但是,您会注意到许多Python项目尝试使用超类和单元测试来形式化其接口定义。
依赖性反转(取决于抽象)通常是一种语言特征。没有多少设计模式坚持这一点。但是,我们中的许多人喜欢使用Java Collections库中的抽象,以便我们可以在具体类中使用Liskov Substitution。
答案 1 :(得分:0)
我做了相同的演示,我选择了一些设计模式来展示他们如何应用这些原则。
我注意到,对于LSP,GOF中除了两种设计模式之外的所有模式都使用了替换。