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

本文介绍了一种使用Builder模式优化Java构造器的方法,通过区分必要参数和非必要参数,使得构造器更加灵活且安全。具体实现包括定义Builder内部类,设置必要的构造参数,并提供链式调用方法来设定非必要参数。

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

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

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

这样调用的好处是,

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

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值