戦略パターンとオープンクローズ原則の両方を読んだことがありますが、どちらも同じように見えます。
これについてあなたの考えを共有してください。
戦略パターンとオープンクローズ原則の両方を読んだことがありますが、どちらも同じように見えます。
これについてあなたの考えを共有してください。
OCP は戦略よりもはるかに一般的なレベルで提供されます。そのため、OCP はパターンではなく原則です。OCP は、Y と Z を実行し、別のクラスと W の方法で協力するクラス X が存在する必要があるとは述べていません。クラスは変更に対しては閉じているが、拡張に対しては開いている必要があるとのみ述べています。
クラス自体を変更する代わりに、クラスの責任の一部を戦略に外部化し、新しい戦略を作成することで、クラスで OCP を実現できますが、OCP を尊重する唯一の方法ではありません。Abstract Factory など、OCP の実現に役立つパターンは他にもあります。
戦略パターンは、実行時にさまざまなアルゴリズムを選択することと関係があります。メンテナンス中にクラスを変更する必要があるかどうか、またはどのように変更する必要があるかについては何も述べていません。
オープン/クローズの原則は、メンテナンス中に拡張を許可することと関係がありますが、変更は許可しません。実行時に異なるアルゴリズムを実装または選択することについては何も述べていません。
これら2つがまだ同じように見える場合は、各パターンを組み込んだコードを作成することをお勧めします。それは違いを明確にするはずです。
オープンクローズは、戦略パターンがそれを実装するための良い方法である原則です。
私が思うに、デザインパターンは - ある種の病気に対する治療薬のようなものです。そして病気 - SOLIDの違反です
もう 1 つ - すべてのデザイン パターンへの準拠 SOLID 原則、およびその他の原則: 継承よりも構成を優先する 変更をカプセル化する 凝集度が高く、結合度が低いなど
http://www.remondo.net/solid-principles-csharp-open-closed/の例:
...これは、オープン/クローズドの原則に違反しています。...これを確立する1つの方法は、戦略パターンを適用することです...