最近在研读《effective java》这本书,做一个简单的笔记。
构造器和静态工厂有一个共同的局限性,都不能很好的扩展大量的可选参数,考虑到很多可选参数的构造,我们引入一个新的设计模式。即构造器模式。
package EffectiveJava;
/**
* @author 韦海涛
* @version 1.0
* @date 3/30/2021 11:23 PM
*/
//Builder Pattern
public class No2Builder {
private final int servingSize;
private final int serving;
private final int calories;
private final int fat;
private final int sodium;
private final int carbohydrate;
private static class Builder {
private final int servingSize;
private final int serving;
private int calories = 0;
private int fat = 0;
private int sodium = 0;
private int carbohydrate = 0;
public Builder(int servingSize, int serving) {
this.servingSize = servingSize;
this.serving = serving;
}
public Builder calories(int val){
calories = val;
return this;
}
public Builder fat(int val){
fat = val;
return this;
}
public Builder sodium(int val){
sodium = val;
return this;
}
public Builder carbohydrate(int val){
carbohydrate = val;
return this;
}
public No2Builder builder(){
return new No2Builder(this);
}
}
private No2Builder(Builder builder){
servingSize = builder.servingSize;
serving = builder.serving;
calories = builder.calories;
fat = builder.fat;
sodium = builder.sodium;
carbohydrate = builder.carbohydrate;
}
public int getCalories() {
return calories;
}
public static void main(String[] args) {
No2Builder no2Builder = new Builder(240,9).calories(100).fat(10).sodium(1).builder();
System.out.println(no2Builder.getCalories());
}
}