gpt4 book ai didi

java构建器模式和变化的字段

转载 作者:行者123 更新时间:2023-12-01 07:17:58 25 4
gpt4 key购买 nike

我很难弄清楚如何更改由构建器模式创建的对象中的某些字段:例如,这是一个类

public class Pizza {
private int size;
private boolean cheese;
private boolean pepperoni;
private boolean bacon;

public static class Builder {
//required
private final int size;

//optional
private boolean cheese = false;
private boolean pepperoni = false;
private boolean bacon = false;

public Builder(int size) {
this.size = size;
}

public Builder cheese(boolean value) {
cheese = value;
return this;
}

public Builder pepperoni(boolean value) {
pepperoni = value;
return this;
}

public Builder bacon(boolean value) {
bacon = value;
return this;
}

public Pizza build() {
return new Pizza(this);
}
}

private Pizza(Builder builder) {
size = builder.size;
cheese = builder.cheese;
pepperoni = builder.pepperoni;
bacon = builder.bacon;
}
}

Pizza 对象是这样创建的:

Pizza pizza = new Pizza.Builder(12)
.cheese(true)
.pepperoni(true)
.bacon(true)
.build();

现在我想知道如何改变这个对象例如奶酪场要假?我没有 getter 和 setter,我知道我可以使用反射,但这会使代码更难阅读和理解。那么构建器模式对于非最终对象有用吗?

最佳答案

构建器模式通常适合创建不可变对象(immutable对象),但它并不需要这样做。如果您希望能够在 build 之后更改值,则只需为此添加一个 setter 即可。

关于java构建器模式和变化的字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51998929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com