🚀
Java | ダブルディスパッチ | Visitorパターン
Java
ダブルディスパッチ
- Javaは単一ディスパッチの言語であり、メソッドのオーバーロードやオーバーライドは、呼び出し時のオブジェクトの型ではなく、参照型に基づいて決定される。
ダブルディスパッチの模倣
Visitorパターンでは、以下のようにダブルディスパッチを実現する:
- Visitorインターフェース: 各具体的な型に対するvisitメソッドを定義する。
- Acceptorインターフェース: acceptメソッドを持ち、Visitorを受け入れる役割を果たす。このメソッド内で、Visitorのvisitメソッドを呼び出す。
このようにすることで、Visitorがどの具体的な型に対して処理を行うかを決定することができる。
JavaのVisitorパターン
- JavaでのVisitorパターンは、ダブルディスパッチを模倣するために、Visitorインターフェースのメソッドを利用して、特定の型に対する処理を実行する。クラス自体を変更せずに新たな操作を追加することができる。
- Visitorパターンは、特にオブジェクトの構造が複雑で、異なる操作を追加する必要がある場合に有用。
Discussion