상위문서: GoF 디자인 패턴
인스턴스를 생성할 때, 생성자(Constructor)만을 통해서 생성하는데는 어려움이 있다.
빌더 패턴은 이 문제를 기반으로 고안된 패턴 중 하나이다.
예를 들면, 생성자 인자로 너무 많은 인자가 넘겨지는 경우 어떤 인자가 해당 값을 나타내는지 확인하기 힘들다.
class Student{
public Student(long id, String name, String major){
this.id = id
this.name = name
this.major = major
}
public Student(long id, String name, String major, int Age){
this.id = id
this.name = name
this.major = major
this.age = age
}
}
Student student = new Student();
student.setId(123);
student.setName("hong");
student.setAge(20);
점증적 생성자 패턴과 자바 빈 패턴의 장점을 결합한 것이 바로 빌더 패턴이다.
클라이언트 코드에서 필요한 객체를 직접 생성하는 대신, 그 전에 필수 인자들을 전달하여 빌더 객체를 만든 뒤, 빌더 객체에 정의된 설정 메서드들을 호출하여 인스턴스를 생성하는 것이다
장점은
1. 필수 인자와 optional 인자를 구별 할 수 있다.
2. optional 인자인 경우 가독성이 보다 더 좋은 코드로 인자를 넘길 수 있다.
Student student = new Student.Builder(123, "hong")
.major("CS")
.age(20)
.build()