著作一覧 |
あと500年程度、休んでたいな。
switch (a.p) { case P1: b(a); break; case P2: b(a); c(a); break; ... } void b(A a) { a.d(); a.e(); } void c(A a) { a.f(); }から
X x = getX(a); x.do(a); ... interface X { void do(A a); } X getX(A a) { switch (a.p) { case P1: return new X1(); case P2: return new X2(); ... } class X1 implements X { void do(A a) { a.d(); a.e(); } } class X2 implements X { void do(A a) { a.d(); a.e(); a.f(); } } ...さらに
class XBase implements X { void do(A a) { a(a); b(a); } void a(A a) { a.d(); a.e(); } void b(A a) { a.f(); } } class X1 extends XBase { void b(A a) { } } class X2 extends XBase { }
ジェズイットを見習え |