両方のパターンを学習しましたが、これら 2 つのパターンの違いがわかりませんでした。
これらのパターンをいつ、どこで使用するか、シナリオがわかりません。
違いとユースケースを説明できる人はいますか?
両方のパターンを学習しましたが、これら 2 つのパターンの違いがわかりませんでした。
これらのパターンをいつ、どこで使用するか、シナリオがわかりません。
違いとユースケースを説明できる人はいますか?
主な違いは、戦略パターンは関連する行動の単一のグループをカプセル化するのに対し、訪問者パターンはそのような複数のグループをカプセル化することです。
訪問者パターンの意図:
オブジェクト構造の要素に対して実行される操作を表します。Visitor を使用すると、操作対象の要素のクラスを変更せずに、新しい操作を定義できます。
次の場合は訪問者パターンを使用します。
Visitor パターンは Object の既存のコードを変更せずに新しい操作を追加できる柔軟性を提供しますが、この柔軟性には欠点があります。
新しい Visitable オブジェクトが追加された場合、Visitor クラスと ConcreteVisitor クラスのコードを変更する必要があります。この問題に対処する回避策があります。リフレクションを使用すると、パフォーマンスに影響します。
詳細については、 oodesignの記事とソース作成の記事を参照してください。
戦略パターンの意図:
アルゴリズムのファミリーを定義し、それぞれをカプセル化し、交換可能にします。戦略により、アルゴリズムは、それを使用するクライアントとは独立して変更できます。
戦略を使用すると、オブジェクトの内臓を変更できます。
詳細については、以下の SE に関する質問を参照してください。
訪問者パターンは、オブジェクト階層をトラバースし、印刷やレポートなどの機能を提供するために使用されます。これを使用して、さまざまな形式 (テキスト/HTML) を提供し、各形式に 1 つずつ、複数の訪問者を記述してオブジェクト階層を印刷しました。階層内のオブジェクトは訪問可能オブジェクトです。
戦略パターンは、入力に基づいて特定の論理パスを選択するために使用されます。Authorization
古典的な例は、 HTTP ヘッダーの値に基づいて、NTLM/Negotiate/Basic などのさまざまな認証戦略が選択されて実行される認証フィルターです。フィルタは AuthenticationStrategy インターフェースへの参照を保持します。受信リクエストに基づいて、特定の認証戦略が選択され、この参照に割り当てられます。その後のコードは、使用されている正確な戦略を知る必要はありません。