1.考虑用静态工厂方法替代构造器
2.遇到多个构造器参数时要考虑用构建器
- 重叠构造器(telescoping constructor)模式
对不同构造器参数个数提供不同的构造器。 - JavaBean 模式
public class Bean{
private int fat;
setter,getter
...
}
- Builder模式
如果类的构造器或静态工厂中具有多个参数,Builder模式就是种不错的选择。
public class NutrilonFacts {
private final int servingSize;
private final int fat;
private final int calories;
public static class Builder{
private final int servingSize;
private int fat=0;
private int calories=0;
public Builder(int servingSize){
this.servingSize=servingSize;
}
public Builder fat(int val){
fat=val;
return this;
}
public Builder calories(int val){
calories=val;
return this;
}
public NutrilonFacts build(){
return new NutrilonFacts(this);
}
}
public NutrilonFacts(Builder builder) {
this.servingSize=builder.servingSize;
this.fat=builder.fat;
this.calories=builder.calories;
}
public static void main(String[] args){
NutrilonFacts nutrilonFacts=new NutrilonFacts.Builder(100).calories(1).fat(2).build();
System.out.println(nutrilonFacts.servingSize+","+nutrilonFacts.fat+","+nutrilonFacts.calories);
}
}