생성자와 정적 팩터리는 매개변수가 많을 때 적절히 대응하기 어렵다.
public class User {
private final int age; // 필수
private final int phoneNumber; // 필수
private final int weight; // 선택
private final int tall; // 선택
private final int birthday; // 선택
}
점층적 생성자 패턴으로 생성을 했었다.
private User(int age, int phoneNumber) {
this.age = age;
this.phoneNumber = phoneNumber;
}
private User(int age, int phoneNumber, int weight) {
**this(age, phoneNumber);**
this.weight = weight;
}
private User(int age, int phoneNumber, int weight, int tall) {
**this(age, phoneNumber);**
this.weight = weight;
this.tall = tall;
}
private User(int age, int phoneNumber, int weight, int tall, int birthday) {
**this(age, phoneNumber);**
this.weight = weight;
this.tall = tall;
this.birthday = birthday;
}
User user = new User(20, 99998888, 70, 180, 1225);
매개변수가 늘어날수록 코드를 작성하거나 읽기 어렵다.
public class User {
private int age = 1;
private int phoneNumber = 11111111;
private int weight;
private int tall;
private int birthday;
public void setAge(final int age) { this.age = age; }
public void setPhoneNumber(final int phoneNumber) { this.phoneNumber = phoneNumber; }
public void setWeight(final int weight) { this.weight = weight; }
public void setTall(final int tall) { this.tall = tall; }
public void setBirthday(final int birthday) { this.birthday = birthday; }
}
User user = new User();
user.setAge(20);
user.setPhoneNumber(99999999);
user.setWeight(70);
user.setTall(180);
user.setBirthday(1225);
점층적 생성자 패턴의 단점이 보완되었다. 더 읽기 쉬운 코드가 되었다.
하지만 심각한 단점을 가지고 있다.