一、背景
对于有多个可选参数的类,我们一般通过什么办法传递参数呢?这里提供了三种办法:
①. 重叠构造器模式
②. JavaBeans模式
③. Builder构建器模式
下面我们来分析一下以上三种方法的优势及弊端。
二、重叠构造器模式
重叠构造器模式中第一个构造器中只有必要参数,第二个构造器有一个可选参数,第三个构造器中有两个可选参数,依次类推,最后一个构造器中包含所有可选参数。这种方案可行,但是有较大缺陷。
缺点:当有很多可选参数的时候,客户端代码很难编写,并难以阅读,如果客户端不小心颠倒了其中两个参数的顺序,编译器也不会报错,但是程序在运行时会出现错误的行为。
/* * 构造器模式 */ public class NutritionFacts1 { private int a1; // 必须 private int a2; // 必须 private int a3; // 可选 private int a4; // 可选 public NutritionFacts1(int a1, int a2) { this(a1, a2, 0); } public NutritionFacts1(int a1, int a2, int a3) { this(a1, a2, 0, 0); } public NutritionFacts1(int a1, int a2, int a3, int a4) { this.a1 = a1; this.a2 = a2; this.a3 = a3; this.a4 = a4; } public int getA1() { return a1; } public void setA1(int a1) { this.a1 = a1; } public int getA2() { return a2; } public void setA2(int a2) { this.a2 = a2; } public int getA3() { return a3; } public void setA3(int a3) { this.a3 = a3; } public int getA4() { return a4; } public void setA4(int a4) { this.a4 = a4; } public String toString() { return a1 + "-" + a2 + "-" + a3 + "-" + a4; } public static void main(String[] args) { NutritionFacts1 nf = new NutritionFacts1(1, 2, 3, 4); System.out.println(nf); } }
查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索int
, 参数
, this
, int[] a={1
, public
, 模式
, 构造器
构造器模式
构建工作空间遇到问题、过梁遇到构造柱、遇到多个构造器、effective java、effective,以便于您获取更多的相关知识。