如何更改 Builder 设计模式中方法的可见性?
例如我有这个 Builder :
public class Builder {
public Builder a() {
//
return this;
}
public Builder b() {
//
return this;
}
}
用户可以使用 API 并执行以下操作:new Builder().a().b();
new Builder().a();
new Builder().b();
new Builder().b().a();
我要让他访问方法b()
仅当 a()
被称为:new Builder().a().b();
new Builder().a();
一个简单的例子可能是 SQL 请求构建器。你不应该被允许拨打 when()
之前 select()
.怎么做?
最佳答案
如果我正确理解你的问题,你可以这样做:
public class Builder {
private boolean aProcessed;
public Builder() {
this.aProcessed = false;
}
public Builder a() {
//
aProcessed = true;
return this;
}
public Builder b() throws IllegalAccessException {
if (!aProcessed) {
throw new IllegalAccessException();
}
//
return this;
}
}
关于java - 如何在 Builder 设计模式中实现方法的条件可见性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69692600/