多个构造器即为重叠构造器模式,但是参数过多,导致的重叠构造器过多时很容易出问题,比如说构造器中某两个参数位置写反,这时候如果类型都是一样的话,使用上是不会有什么问题的,但是不容易被发现。
所以我们考虑到了用JavaBean模式来弥补这个的问题,即用set方法来解决构造器过多问题,如下:
public NutritionFacts() { public void setServingSize(int val) { servingSize = val; } public void setServings(int val ) { servings = val; } public void setCalo ies(int val ) { calo es = val; } public void setFat(int val) {fat=val;} public void setSodium(int val) {sodium= val; } public void setCarbohydrate(int val) { carbohydrate = val ; } }
但是这样子可能会产生线程安全问题,也会可能因为疏忽大意而弄错set,于是这个时候我们需要一个更好的解决方案。
建造者模式(builder):
类NutritionFacts内部创建一个Builder类,然后NutritionFacts也拥有有参构造函数Builder用Builder来对NutritionFacts进行初始化,然后就具备了可选参数和类层次结构。