我正在处理一个问题,那里有几个Foo的实现,伴随着几个FooBuilder的.虽然Foo分享了需要设置的几个常见变量,但它们也有不同的变量,需要他们各自的FooBuilder来实现一些特定的功能.为了简洁,我想让FooBuilder的设置者使用方法链,如:
public abstract class FooBuilder {
...
public FooBuilder setA(int A) {
this.A = A;
return this;
}
...
}
和
public class FooImplBuilder extends FooBuilder{
...
public FooImplBuilder setB(int B) {
this.B = B;
return this;
}
public FooImplBuilder setC(int C) {
this.C = C;
return this;
}
...
}
等等,与几个不同的FooBuilder实现.这在技术上完成我想要的一切,但是,当执行方法链接时,这种方法对方法调用的顺序敏感.以下有方法未定义的编译错误:
someFoo.setA(a).setB(b)...
要求开发人员考虑链中方法调用的顺序.为了避免这种情况,我想让FooBuilder中的setter返回实际的实现子类.但是,我不知道如何做到这一点.什么是最好的方法?