Effective Java(一)
用静态工厂方法代替构造器
public static Boolean valueOf(boolean b){
return b?Boolean.TRUE:Boolean.FALSE;
}
遇到多个构造器参数时要考虑用构建器
构造器模式:使用多个构造器来初始化值
JavaBeans模式:使用setter来设置参数值
缺点:在构造的过程中可能处于不一致的状态
public class Example{
private int parameter1 = 0;
private int parameter2 = 0;
public Example() {}
public void setParameter1(int val){
parameter1 = val;
}
public void setParameter2(int val){
parameter2 = val;
}
}
Example ex = new Example();
ex.setParameter1(1);
ex.setParameter2(2);
Builder模式:不直接生成想要的对象,让客户端利用所有必要的参数调用构造器,得到一个builder对象。
public class Example{
private final int parameter1;
private final int parameter2;
public static class Builder{
//required parameter
private final int parameter1;
//optional parameter - initialized to default values
private int parameter2 = 0;
public Buidler(int parameter1){
this.parameter1 = parameter1;
}
public Builder setParameter2(int parameter2){
this.parameter2 = parameter2;
return this;
}
public Example build(){
return new Example(this);
}
}
private Example(Builder builder){
parameter1 = builder.parameter1;
parameter2 = builder.parameter2;
}
}
Example ex = new Example.Builder(1).setParameter2(2).build();