17. 項目2 ビルダーパターン
• テレスコーピングコンストラクタ
2014/4/4 EffectiveJava輪読会 17
public class 栄養成分{
private final int 分量; //必須
private final int 総容量; //必須
private final int カロリー; //オプション
private final int 脂肪; //オプション
private final int 炭水化物; //オプション
private final int タンパク質; //オプション
public 栄養成分(int 分量, int 総容量, int カロリー, int 脂肪,
int 炭水化物, int タンパク質){
this.分量 = 分量;
this.総容量 = 総容量;
this.カロリー = カロリー;
this.脂肪 = 脂肪;
this.炭水化物 = 炭水化物;
this.タンパク質 = タンパク質;
}
}
18. テレスコーピングコンストラクタ
• 次のように各オプションを定義
2014/4/4 EffectiveJava輪読会 18
public 栄養成分(int 分量, int 総容量){
this(分量, 総容量, 0, 0, 0, 0);
}
public 栄養成分(int 分量, int 総容量, カロリー){
this(分量, 総容量, カロリー, 0, 0, 0);
}
public 栄養成分(int 分量, int 総容量, カロリー, 脂肪){
this(分量, 総容量, カロリー, 脂肪, 0, 0);
}
public 栄養成分(int 分量, int 総容量, カロリー, 脂肪, 炭水化物){
this(分量, 総容量, カロリー, 脂肪, 炭水化物, 0);
}
22. ビルダーパターン
• 栄養成分クラス
2014/4/4 EffectiveJava輪読会 22
public class 栄養成分{
private final int 分量; //必須
private final int 総容量; //必須
private final int カロリー; //オプション
private final int 脂肪; //オプション
private final int 炭水化物; //オプション
private final int タンパク質; //オプション
public static class Builder{
……
}
private 栄養成分(Builder builder){
分量 = builder.分量;
総容量 = builder.総容量;
カロリー = builder.カロリー;
脂肪 = builder.脂肪;
炭水化物 = builder.炭水化物;
タンパク質 = builder.タンパク質;
}
}
23. ビルダーパターン
• ビルダークラスの詳細
2014/4/4 EffectiveJava輪読会 23
public static class Builder{
private final int 分量;
private final int 総容量;
private int カロリー = 0;
private int 脂肪 = 0;
private int 炭水化物 = 0;
private int タンパク質 = 0;
public Builder(int 分量, int 総容量){
this.分量 = 分量;
this.総容量 = 総容量;
}
//続く→