我正在做一个固体设计原则的演示,我试图把单一责任原则和开放-封闭原则与设计模式联系起来。
目前我有
还有其他基本的模式我应该包括吗?
发布于 2009-01-05 12:19:10
坚实的原则更多的是一个好的面向对象语言和框架的属性,而不是其他任何东西。它们不会轻易地转化为设计模式。相反,它们会在设计模式中影响好与坏。
通常,在每种设计模式中都会出现所有实体原则的。如果所有坚实的原则都没有出现,那么您就有办法改进设计模式。
单个责任实际上是封装,加上继承和多态的某些方面。单一责任更多的是如何将问题分解为协作对象并定义这些对象的类的基本原则或原则。所有的设计模式都应该说明这一点。
类似地,Open/Closed是一种语言特性,通常通过继承实现。但这可以通过猴子识别来完成。所有的设计模式都应该说明这一点。
Liskov替代也通常是一种语言特征。我们经常通过精心设计的多态类来实现这一点。有些人认为鸭子类型违反了这一原则,另一些人则认为鸭子类型体现了这一点。有许多设计模式依赖于Liskov替代。任何具有多态性的东西都会显示Liskov替换。
接口隔离可以是一种语言特性。爪哇有了。Python --根据大多数帐户--并不能做到这一点。但是,您将注意到许多Python项目试图用超类和单元测试来形式化它们的接口定义。
依赖反转(依赖于抽象)通常是一种语言特性。没有多少设计模式坚持这样做。但是,我们中的许多人都喜欢使用Java集合库中的抽象,这样我们就可以在具体的类中使用Liskov替换。
发布于 2009-01-05 12:25:26
我也做过同样的演示,我挑选了一些设计模式来展示它们是如何应用原则的。
我注意到,对于LSP,除两种设计模式外,GOF都使用替代。
https://stackoverflow.com/questions/412914
复制相似问题