一个构造器,具有多个参数的时候,应该区别开构造时候的必要参数和不必要参数。
如一个人的信息,比如手机号码,用户名,密码是必须的,其他信息如 身高,体重,年龄等不一定非要是完整的
public class Person{
private final String nameUser;
private final String passWd;
private final String phoneNo;
private final int heightUser;
private final int WeightUser;
private final int ageUser;
//Bulider方法
public static class Builder{
private final String nameUser; //neccessary
private final String passWd;
private final String phoneNo;
private final int heightUser =0; //unccessary
private final int WeightUser =0;
private final int ageUser =0;
public Bulider(String name,String passwd,String phonenumber){
this.nameUser = name;
this.passWd = passwd;
this.phoneNo = phonenumber;
}
public Bulider Height(int height){
heightUser =height;
return this;
}
public Builder Weight(int weight){
weightUser =weight;
return this;
}
public Builder Age(int age){
ageUser=age;
return this;
}
public Person bulid(){
return new Person(this);
}
private Person(Builder bulider){
nameUser =bulider.nameUser;
passWd =bulider.passWd;
phoneNo =bulider.phoneNo;
heightUser = bulider.heightUser;
weightUser = bulider.weightUser;
ageUser =bulider.ageUser
}
}
调用 :Person person = new Person.Bulider(abondonboy,******,18200001111).Height(1.78).Weight(80).Age(18);
这样调用的好处是,
第一:区分开必要构造参数,非必要构造参数
第二:对于多个参数的构造器,一个构造函数满足所有问题
第三:构造器足够安全,同时构造,不会逻辑紊乱,满足逻辑的一次构造性