使用构建器模式时,为什么我不应该重用构建器对象来访问对象配置?
When using a Builder Pattern why shouldn't I reuse the builder-object to access the object configuration?
在使用 Builder Pattern 时,为什么我不应该重用构建器对象来访问对象配置?
例如:
正常方式:
ObjectA(ObjectBuilder b) {
this.a = b.getA();
}
public Object getA(){
return this.a;
}
但为什么我不能只使用这个:
ObjectA(ObjectBuilder b) {
this.builder = b;
}
public Object getA(){
return this.builder.getA();
}
谢谢:)
使用构建器的一个重要原因是构建一个不可变的对象:构建器是可变的,它构建的东西不是(必然)。
如果您委托给构建器,您的实例将再次可变:任何引用 ObjectBuilder
相同实例的人都可以更改您的 ObjectA
。这意味着您在构造时对 ObjectA
状态的有效性所做的任何检查都可能无效。
如果您想要一个可变对象,则不需要构建器:只需在 ObjectA
.
上安装 setter
在使用 Builder Pattern 时,为什么我不应该重用构建器对象来访问对象配置? 例如:
正常方式:
ObjectA(ObjectBuilder b) {
this.a = b.getA();
}
public Object getA(){
return this.a;
}
但为什么我不能只使用这个:
ObjectA(ObjectBuilder b) {
this.builder = b;
}
public Object getA(){
return this.builder.getA();
}
谢谢:)
使用构建器的一个重要原因是构建一个不可变的对象:构建器是可变的,它构建的东西不是(必然)。
如果您委托给构建器,您的实例将再次可变:任何引用 ObjectBuilder
相同实例的人都可以更改您的 ObjectA
。这意味着您在构造时对 ObjectA
状态的有效性所做的任何检查都可能无效。
如果您想要一个可变对象,则不需要构建器:只需在 ObjectA
.