Visitor パターン
Visitor パターンは関心の分離をより進展させる可能性があるが、加えて単純に多態的なメソッドを呼び出す以上の利点として、Visitor パターンでは状態を持つことができる。これは、オブジェクトに対して実行されるアクションが以前のアクションに依存するような多くのケースで極めて有用である。
この例は、pretty-printer のプログラミング言語 による実装(コンパイラやインタプリタによる)である。pretty-printer オブジェクト (本例では Visitor として実装されている)は、パースされ、処理されたデータ構造内のノードを巡回する。pretty-printer は次に、プログラムツリーのテキストによる表現を生成する。出力を人間が可読なものにするために、pretty-printer はプログラムの文や表現を適切にインデントしなければならない。「現在のインデント幅」が visitor により状態の一つとして追跡され、単純な多態的な関数の呼び出しとして、カプセル化が正しく行われ、インデント幅はパラメータとして公開され、呼び出し者はこのパラメータを正しく使用するためのメソッドの実装を信頼する。