Java类设计过程中,如果类的构造器或者静态工厂中具有多个参数,并且其中有大量的可选参数时,我们应该怎么办?
1.Telescoping Constructor模式(重叠构造器)
我们首先想到的方法肯定是传统的构造器
/**
* Created by itbird on 2017/3/23
*/
public class Person {
private String name;
private String sex;
private int year;
public Person(String name, String sex, int year) {
this.name = name;
this.sex = sex;
this.year = year;
}
}
但是设计以及使用过程中我们发现以下几点问题:
(1)属性参数逐渐变多时
属性参数逐渐变多时,由于要对之前的代码做兼容,所以不可以直接在现有构造器后面追加属性,只能不断新增构造器
/**
* Created by itbird on 2017/3/23
*/
public class Person {
private String name;
private String sex;
private int year;
private String city;
public Person(String name, String sex, int year) {
this.name = name;
this.sex = sex;
this.year = year;
}
public Person(String name, String sex, int year, String city) {
this.name = name;
this.sex = sex;
this.year = year;
this.city = city;
}
}
(2)属性参数中有大量的可选参数
/**
* Created by itbird on 2017/3/23
*/
public class Person {
private String name;
private String sex;
private int year;
private String city;