0

私は Strategy Design Pattern を使用して 2 つの異なる具体的な戦略を実装しています。これが戦略設計パターンの利点を「壊す」のでしょうか、それとも違いがあるのでしょうか? 抽象クラスに戦略インターフェースを実装させ、2 つの戦略をその抽象クラスから継承させるなど、これを行うためのより良い方法はありますか?

この質問を別の方法で見ると、次のようになります。戦略デザイン パターンの利点は、他の戦略に影響を与えることなく、さまざまな戦略を追加および削除できるという事実に由来しますか? もしそうなら、コードをより複雑な具体的な戦略にコピーする必要がありますか?


私の特定のケースでは、2 つの異なるエッセイ ソーター戦略を実装しています。

  1. 1 つ目は、特定のキーワードとの類似性に基づいてすべてのエッセイを並べ替えます。

  2. 2 番目の戦略では、最初にすべての著者を並べ替えます。次に、最初の具体的な戦略を呼び出して、各著者のエッセイをキーワードとの類似性に基づいて並べ替えます。

これは適切な設計ですか?

4

1 に答える 1

0

. これが戦略設計パターンの利点を「壊す」のでしょうか、それとも違いがあるのでしょうか?

コードをコピーするのはよくありません。1 か所で修正する必要がある場合は、修正をすべてのコピーにコピーするのを忘れる可能性があります。この混乱を支えなければならない哀れな魂のことを考えてみてください!

戦略に共通のコードがある場合は、次のいずれかを行うことができます

  • 共通コードをユーティリティ クラスに入れ、集約を追加するか、共通クラスを両方の実装のメンバーとして追加します。

  • 共通コードを基本クラスに入れ、両方の実装でこのクラスを継承する

通常、集約は継承よりも優先されます。

于 2013-12-02T15:45:50.770 に答える