| 著作一覧 |
あと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 {
}
ジェズイットを見習え |