Userインタフェースへのメソッドの追加 |
PrintVisitorのvisitメソッドのオーバーロードには引数の型が重要でした。User型で宣言されたオブジェクトは、オブジェクトの本来の型に関係なく引数がUser型のメソッドが呼び出されます。 これでは、ArrayList<:User> users;と宣言されたArrayListからUserオブジェクトを取り出し、PrintVisitorのオーバーロードを利用して出力を振り分けることはできません。 では、この問題を解決する方法はないのでしょうか。 このような問題の解決方法としてVisitorパターンがあります。 ではVisitorパターンを学びましょう。 最初に、Userインタフェースへのacceptメソッドの追加を行います。このメソッドはVisitorオブジェクトの受け入れを行います。 次に、Userインタフェースを実装した具象クラスではacceptメソッドの実装を記述します。 |
---|