6.4 User インタフェースへのメソッドの追加

プログラム

C6_4

プログラムの説明

Userインタフェースへのメソッドの追加

PrintVisitorのvisitメソッドのオーバーロードには引数の型が重要でした。User型で宣言されたオブジェクトは、オブジェクトの本来の型に関係なく引数がUser型のメソッドが呼び出されます。

これでは、ArrayList<:User> users;と宣言されたArrayListからUserオブジェクトを取り出し、PrintVisitorのオーバーロードを利用して出力を振り分けることはできません。

では、この問題を解決する方法はないのでしょうか。

このような問題の解決方法としてVisitorパターンがあります。

ではVisitorパターンを学びましょう。

最初に、Userインタフェースへのacceptメソッドの追加を行います。このメソッドはVisitorオブジェクトの受け入れを行います。

次に、Userインタフェースを実装した具象クラスではacceptメソッドの実装を記述します。