Visitor は、 振る舞いに関するデザインパターンの一つで、 既存コードを変更することなく、 既存のクラス階層に新しい振る舞いの追加を可能とします。
Visitor の代わりに単純にメソッドの多重定義 (overload) を使うことができない理由については、 別の記事 『ビジターと二重ディスパッチ』 を参照。
複雑度:
人気度:
使用例: Visitor は、 その複雑さと狭い適用範囲のため、 あまりよく使われません。
概念的な例
この例は、 Visitor デザインパターンの構造を説明するためのものです。 以下の質問に答えることを目的としています:
- どういうクラスからできているか?
- それぞれのクラスの役割は?
- パターンの要素同士はどう関係しているのか?
main.rb: 概念的な例
output.txt: 実行結果
他言語での Visitor