我在创建一个“部分”可变的对象时发现使用构建器是否是正确的方法,即某些对象的属性是可变的。使用构建器构建“部分”可变对象?
让我们考虑一下这个接口的实现。可以创建对象后改变的最后一个必备参数,一个可选的参数:
public class SimpleGlass implements IGlass {
// Mandatory.
private final int size;
// Optional.
private boolean isEmpty;
private SimpleGlass(SimpleGlassBuilder builder) {
size = builder.getSize();
isEmpty = builder.isEmpty();
}
@Override
public int getSize() {
return size;
}
@Override
public boolean isEmpty() {
return isEmpty;
}
@Override
public void setEmpty(boolean isEmpty) {
this.isEmpty = isEmpty;
}
public static class SimpleGlassBuilder {
// Mandatory.
private final int size;
// Optional.
private boolean isEmpty = false;
public SimpleGlassBuilder(int size) {
this.size = size;
}
public SimpleGlassBuilder setEmpty(boolean isEmpty) {
this.isEmpty = isEmpty;
return this;
}
public IGlass build() {
return new SimpleGlass(this);
}
public int getSize() {
return size;
}
public boolean isEmpty() {
return isEmpty;
}
}
}
所以生成器所创建可变对象,然而,每当生成器编程文献它是关于一个不可改变的对象提及。
在这种情况下使用建造者可以吗?
构建器模式MAINLY有助于创建可能需要许多设置参数的类的实例,这并不一定意味着您不能为可变对象创建构建器 – frictionlesspulley