我仍然遵循以下实施Builder模式? 令我困惑的是类“myClass”中受保护的构造函数。当涉及到构建器模式时,我首先想到的是隐藏构建器应该构建的对象。但在这里我们没有。我不明白这是不是好的设计或好的设计。构建器模式,但建设者在对象构造函数
public class MyClass{
private final String x;
private final String y;
protected MyClass(MyBuilder builder){
this.x = builder.getX();
this.y = builder.getY();
}
//getters...
}
public class MyBuilder{
private String X;
private String Y;
public MyBuilder withX(String x){
this.x = x;
return this;
}
public MyBuilder withY(String y){
this.y = y;
return this;
}
public MyClass build(){
return new MyClass(this);
}
//getters....
}
public class Main{
public static void main(){
//Example 1
MyClass myClass = new MyBuilder().withX("x").withY("y").build();
//Example 2
MyClass myClass2 = new MyClass(new MyBuilder().withX("x").withY("y"));
}
}
,如何保护构造函数被调用?从您发布的代码中,构建器不是内联类 – Kritner
此外,您尚未在构建器中定义'getX()'和'getY()'。我假设他们不是自动生成的,但假设是基于我的c#知识,java不是我的正常语言 – Kritner
受保护的构造函数用于构建器构建方法,如更新后的代码所示。 – Robert