我已经阅读了策略模式和开放封闭原则,对我来说都是一样的。如果它们相同,为什么我们有不同的名称模式\原则。
请分享您对此的想法。
答案 0 :(得分:6)
OCP比战略更加普遍 - 这就是为什么它是原则而不是模式。 OCP没有声明应该有一个X类做Y和Z并且W方式与另一个类合作。它只声明类应该关闭以进行修改但是为扩展打开。
您可以通过将其部分职责外部化为策略并编写新策略而不是修改类本身来实现类中的OCP,但它不是尊重OCP的唯一方式。还有其他模式可以帮助实现OCP,比如抽象工厂。
答案 1 :(得分:0)
我认为,设计模式 - 就像治疗某种疾病一样。 而疾病 - 违反S.O.L.I.D。
还有一件事 - 所有设计模式都符合S.O.L.I.D原则和其他原则: 首选组合继承 包含更改 做高内聚和低耦合 等等
以下是http://www.remondo.net/solid-principles-csharp-open-closed/的一些示例:
......这违反了开放/封闭原则。 ...... 建立这种方法的一种方法是应用策略模式 ...
答案 2 :(得分:0)
开闭是一项原则,策略模式是实现该原则的好方法。
答案 3 :(得分:-1)
策略模式与在运行时选择不同的算法有关。它没有说明在维护期间是否或如何修改类。
开放/封闭原则与维护期间允许扩展有关,但不能修改。它没有说明在运行时实现或选择不同的算法。
如果这两个看起来仍然相同,我建议你写一些包含每个模式的代码。这应该使差异变得清晰。