我有一个Foo具有 subtype的类,并且我有一个创建对象SubFoo的构建器。FooBuilderFoo
这是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原则。