我仍然遵循以下實施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