コマンドパターンと訪問者パターン
-
27-09-2019 - |
質問
訪問者が受信者の状態を変更することを許可することは一般に受け入れられますか、それとも代わりにコマンドパターンである必要がありますか?
解決
訪問者パターンの目的は、その継承を修正せずにクラスの繰延に新しい操作を追加できるようにすることです。読み取り専用操作のみが許容できることを示唆する人を見たことはありません。唯一の制限は、追加された操作には、クラスハイラキーのパブリックインターフェイスのみを使用する必要があることです。
他のヒント
何かの状態を変更するのが良いか悪いかにかかわらず、毛布の声明を出すことができるとは思わない。訪問ロジック自体に影響を与えない限り、州を変更しても大丈夫だと思います。たとえば、フォルダー構造の下ですべてのファイルにアクセスし、ファイル名を上品に名前を変更する訪問者を書くことができます。
マイクロソフトの訪問者が受信者を変更した例は ExpressionVisitor. 。 ExpressionVisitorクラスの目的は、式ツリーを変更することです。だから、マイクロソフトは少なくともそれが受け入れられると思うだろうと思います。
各パターンには、独自の長所、短所、ユースケースがあります。
使用できます Command
パターンへ
デカピール コマンドの招待者と受信者
埋め込む 折り返し電話 機構
埋め込む 元に戻してやり直します 機能
維持します コマンドの歴史
使用する Visitor
以下のシナリオのパターン:
- 同様の操作を実行する必要があります 構造にグループ化されたさまざまなタイプのオブジェクト
- 多くの明確で無関係な操作を実行する必要があります。それは分離します 手術 オブジェクトから 構造
- 新しい操作を追加する必要があります オブジェクト構造の変更なし
関連記事:
所属していません StackOverflow