我有一个 BasicFooBuilder 类,它有一个 buildFoo 方法接受一个 Foo 并构建一些东西。但后来我想创建一个完整的构建器层次结构和我想要使用的更复杂的对象。目前我有这样的事情:
public interface Builder{
public void buildFoo(BasicFoo foo);
}
public class BasicFooBuilder implements Builder{
@override
public void buildFoo(BasicFoo foo){
//Do something
}
}
public class FancyFooBuilder extends BasicFooBuilder{
@override
public void buildFoo(BasicFoo foo){
((FancyFoo)foo).doSomethingFancy();
}
//More stuff inherited from basic foo
}
public class FancierFooBuilder extends FancyFooBuilder{
@override
public void buildFoo(BasicFoo foo){
((FancierFoo)foo).doSomethingFancier();
}
//More stuff inherited from basic foo and fancy foo
}
类层次结构是这样的:
BasicFoo
|
FancyFoo
|
FancierFoo
所以问题是这样的:
如果不在子类的覆盖方法中进行所有强制转换,我怎么能做到以上几点?