■目的
処理をデータ構造から分離するために適用する。
Visitorがデータに訪問して処理を行う。
■メリット
- データ構造クラスを変更しなくてもConcreteVisitorを追加するだけで機能を追加できる
- 具象クラスごとに異なる操作を提供する
- 1つのクラスに1つの操作をまとめることができる。
具体的にはVisitorクラス側に操作をまとめられる。
■考慮事項
- ConcreteVisitor役の追加は容易
- ConcreteElement役の追加は困難
すべてのVisitorクラスに修正が必要になるため。
ConcreteElementの追加が想定されるケースではパターンを適用しない方がよい。 - ConcreteVisitorの数が少数である場合は、不必要に構造が複雑になるので適用を控えた方がよい。
■関連しているパターン
- Iteratorパターン
関連しているというよりは、ObjectStructureの実現に必要。 - Compositeパターン
- Interpreterパターン

コメントを残す