빌더(Builder)

Seo·2020년 8월 25일
0

design_pattern

목록 보기
4/11

상위문서: GoF 디자인 패턴

빌더(Builder)

  • 상위 Category : 생성(Creational) 패턴

인스턴스를 생성할 때, 생성자(Constructor)만을 통해서 생성하는데는 어려움이 있다.
빌더 패턴은 이 문제를 기반으로 고안된 패턴 중 하나이다.

예를 들면, 생성자 인자로 너무 많은 인자가 넘겨지는 경우 어떤 인자가 해당 값을 나타내는지 확인하기 힘들다.

  • 점증적 생성자 패턴(telescoping construtor pattern) : 클래스 내에 오버로딩을 통해 생성자를 여러 개 작성하는 것
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
    }
}
  • 자바 빈 패턴(java Bean pattern)
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()
profile
개발관심자

0개의 댓글