我有一个类Foo
,它的子类型为SubFoo
,我有一个生成器FooBuilder
,它创建了Foo
对象。
Foo
的外观如下:
class Foo {
protected Object superField;
}
SubFoo
class SubFoo extends Foo {
private Object subField;
}
class FooBuilder {
protected Object superField;
withSuperField(Object field){
this.superField = field;
}
Foo build(){
return new Foo(superField);
}
}
class SubFooBuilder extends FooBuilder{
protected Object subField;
withSubField(Object field){
this.subField = field;
}
Foo build(){
return new SubFoo(superField,subField);
}
}
有一些代码可以根据某些条件创建适当的构建器。
FooBuilder create(){
return someCriterion ? new FooBuilder() : new SubFooBuilder();
}
是否有一种方法或要进行的更改,以使构建器的客户代码创建一个Foo
或SubFoo
对象,而不知道它使用哪个构建器?因为我不想违反Dependency inversion
原则。