开放封闭原则与战略模式

Var*_*run 2 design-patterns solid-principles

我已经看过战略模式和开放封闭原则对我来说都是一样的.如果它们相同,为什么我们有不同的名称模式\原则.

请分享您对此的想法.

gui*_*e31 6

OCP比战略更加普遍 - 这就是为什么它是一个原则而不是一个模式.OCP没有声明应该有一个X类做Y和Z并且W方式与另一个类合作.它只声明类应该关闭以进行修改但是可以打开以进行扩展.

您可以通过将其部分职责外部化为策略并编写新策略而不是修改类本身来实现类中的OCP,但它不是尊重OCP的唯一方式.还有其他模式可以帮助实现OCP,比如抽象工厂.


Mik*_*ll' 1

策略模式与在运行时选择不同的算法有关。它没有说明在维护期间是否应该修改类或如何修改类。

开放/封闭原则与维护期间允许扩展有关,但不允许修改。它没有说明在运行时实现或选择不同的算法。

如果这两个对您来说仍然相同,我建议您编写一些包含每种模式的代码。这应该可以让差异变得一目了然。