Java の switch 文
「あらゆる分岐を、メソッドのオーバーロードに帰着させる」というのは、
オブジェクト指向設計の「標準形」のひとつだと思う。
switch 文
void proc(var variable) { switch ( variable ) { case c1: ... break; case c2: ... break; } }
は、
interface Procedure{ public void proc(); } class C1 implements Procedure { void proc(){ ... } } class C2 implements Procedure { void proc(){ } } Procedure p = ...; p.proc();
とか。
しかし、Javaのメソッドのオーバーロードによる分岐はあまり強力ではない。
(強力というのは、その構文だけでほとんど何でもできちゃうということ)
ocaml,haskellの引数パターンマッチの方がはるかに便利っぽい。
もっとオブジェクト指向的な話では、
double dispatch、つまり、C1,C2 の型情報によって自動的な切り替えが起こるのと同じように(そして同時に)、
Procedure1とかProcedure2 に関して切り替えが起こってほしい、というのを実現した、
Visitor patternがある。