EffectiveJava 学习感悟1:多参数构造函数,采用静态工厂方法,Bulider模式!

一个构造器,具有多个参数的时候,应该区别开构造时候的必要参数和不必要参数。

如一个人的信息,比如手机号码,用户名,密码是必须的,其他信息如 身高,体重,年龄等不一定非要是完整的

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);

这样调用的好处是,

    第一:区分开必要构造参数,非必要构造参数

    第二:对于多个参数的构造器,一个构造函数满足所有问题

    第三:构造器足够安全,同时构造,不会逻辑紊乱,满足逻辑的一次构造性

猜你喜欢

转载自blog.csdn.net/blood_ing_/article/details/87967685