🚀

Java | ダブルディスパッチ | Visitorパターン

に公開

Java

ダブルディスパッチ

  • Javaは単一ディスパッチの言語であり、メソッドのオーバーロードやオーバーライドは、呼び出し時のオブジェクトの型ではなく、参照型に基づいて決定される。

ダブルディスパッチの模倣

Visitorパターンでは、以下のようにダブルディスパッチを実現する:

  • Visitorインターフェース: 各具体的な型に対するvisitメソッドを定義する。
  • Acceptorインターフェース: acceptメソッドを持ち、Visitorを受け入れる役割を果たす。このメソッド内で、Visitorのvisitメソッドを呼び出す。
    このようにすることで、Visitorがどの具体的な型に対して処理を行うかを決定することができる。

JavaのVisitorパターン

  • JavaでのVisitorパターンは、ダブルディスパッチを模倣するために、Visitorインターフェースのメソッドを利用して、特定の型に対する処理を実行する。クラス自体を変更せずに新たな操作を追加することができる。
  • Visitorパターンは、特にオブジェクトの構造が複雑で、異なる操作を追加する必要がある場合に有用。

Discussion