정적 팩터리메서드이던 생성자이던 선택적인 매개변수가 많을 때 적절히 대응하기는 어렵다.
방법은 크게 3가지로 나뉘어진다.
점층적 생성자 패턴이란 아래와 같은 패턴을 의미한다.
public class Student{
private String name;
private String class;
private int age;
public Student(String name){
this(name,"",0);
}
public Student(String name,String class){
this(name,class,0);
}
}
이처럼 점층적으로 받는 매개변수의 갯수를 바꾸어 생성자를 생성하는 방식을 말한다.
오버로딩을 사용하는 것을 의미한다.
자바빈즈 패턴이란 Setter를 사용하는 디자인 패턴을 의미한다.
Public class Student{
private String name;
private String class;
private int age;
public Student() {}
public setName(String val){
name = val;
}
public setClass(String val){
class = val;
}
}
이처럼 Setter를 사용해서 객체를 생성하는 패턴을 의미한다.
이 방법은 인스턴스를 생성하기 쉬워졌지만 인스턴스를 생성한 후에 객체를 완성시키기까지 객체의 일관성이 무너진 상태에 놓이게 되어진다.
그렇기 때문에 두 가지를 합쳐 놓은 듯한 세번째 방법인 빌더 패턴이 등장한다.
빌터패턴은 자바빈즈패턴처럼 필요한 객체를 직접 만들고 매개변수들을 직접 세팅하는 것이 아니라
필수 매개변수만 가지고 생성자를 호출해서 빌더 객체를 얻는다.