Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Design patterns 实现可靠原则的模式_Design Patterns_Solid Principles - Fatal编程技术网

Design patterns 实现可靠原则的模式

Design patterns 实现可靠原则的模式,design-patterns,solid-principles,Design Patterns,Solid Principles,我正在做一个坚实的设计原则的演示,我试图将单一责任原则和开闭原则与设计模式联系起来 目前我有 SRP:代理,立面 OCP:策略、命令 我还应该包括其他基本模式吗 坚实的原则是一个好的OO语言和框架的更多属性。它们不能轻易地转化为设计模式。相反,它们影响设计模式中的好与坏 一般来说,所有的坚实的原则都会在每个设计模式的某个地方出现。如果所有可靠的原则都没有出现,那么您就有办法改进设计模式 单一责任实际上是封装加上继承和多态性的某些方面。单一责任更像是如何将问题分解为协作对象并定义这些对象的类的

我正在做一个坚实的设计原则的演示,我试图将单一责任原则和开闭原则与设计模式联系起来

目前我有

  • SRP:代理,立面
  • OCP:策略、命令

我还应该包括其他基本模式吗

坚实的原则是一个好的OO语言和框架的更多属性。它们不能轻易地转化为设计模式。相反,它们影响设计模式中的好与坏

一般来说,所有的坚实的原则都会在每个设计模式的某个地方出现。如果所有可靠的原则都没有出现,那么您就有办法改进设计模式

单一责任实际上是封装加上继承和多态性的某些方面。单一责任更像是如何将问题分解为协作对象并定义这些对象的类的基本原则或原则。所有设计模式都应该说明这一点

类似地,Open/Closed是一种语言特性,通常通过继承实现。但这可以通过蒙基补丁来实现。所有设计模式都应该说明这一点

Liskov替换通常也是一种语言特征。我们通常通过设计良好的多态类来实现这一点。一些人认为duck类型违反了这一原则,另一些人认为duck类型体现了这一原则。有许多设计模式依赖于Liskov替代。任何多态性都会表现出Liskov替换

接口隔离可以是一种语言特性。Java拥有它。大多数人认为Python不能做到这一点。然而,您会注意到,许多Python项目试图用超类和单元测试形式化它们的接口定义


依赖倒置(依赖于抽象)通常是一种语言特性。没有多少设计模式坚持这一点。然而,我们中的许多人喜欢使用Java集合库中的抽象,这样我们就可以在具体的类之间使用Liskov替换。

我做了同样的演示,并挑选了一些设计模式来展示它们如何应用这些原则


我注意到,对于LSP,除了GOF的两个设计模式外,其他所有模式都使用了替代模式。

看,如果你有马丁的书,它们将是最好的地方