티스토리 뷰

study

Builder 패턴

soo__ 2022. 4. 27. 21:36

Builder 패턴이란?

  • 생성 패턴(Creational Pattern) 중 하나
    • 생성 패턴 인스턴스를 만드는 절차를 추상화하는 것
    • 무엇이 생성되고, 어떻게 생성되며, 언제 생성할 것인지 결정하는 데 유연성을 확보하기 위함
  • 생성과 표현 코드를 분리
  • 복합 객체를 생성하는 절차를 세밀하게 나눌 수 있음
    • 별도의 Builder 클래스를 만들어 필수 값에 대해서는 생성자를 통해, 선택적인 값들에 대해서는 메소드를 통해 step-by-step으로 값을 입력받은 후, build() 메소드를 통해 최종적으로 하나의 인스턴스를 리턴하는 방식
    • 클라이언트 코드에서 필요한 객체를 직접 생성하는 대신, 그 전에 필수 인자들을 전달하여 빌더 객체를 만든 뒤, 빌더 객체에 정의된 설정 메서드들을 호출하여 인스턴스를 생성

 

 

장점

  • 생성해야 하는 객체가 Optional한 속성을 많이 가질 때 유리  필요한 데이터만 설정할 수 있음
    • 인스턴스를 생성하는데 있어서 필수적인 인자와 선택적인 인자를 구별할 수 있음
    • 선택적인 인자의 경우, 가독성이 좋은 코드로 인자를 넘길 수 있음
  • 변경 가능성을 최소화할 수 있음
    • 무분별한 setter 생성 방지   불필요하게 변경 가능성을 열어두는 부분을 방지

 

 

Builder 패턴 적용 여부 판단

  • 변수의 개수와 변경 가능성 등을 중점적으로 보고 빌더 패턴을 적용할지 판단하면 됨
    • 예시) 변수의 개수가 2개 이하이며, 변경 가능성이 없는 경우

 

 

Lombok 활용 시

  • @Builder(builderMethodName = "name")
    • Builder 패턴을 자동으로 생성
    • builderMethodName에 들어간 이름으로 빌더 메서드를 생성해줌
  • @AllArgsConstructor(access = AccessLevel.PRIVATE)
    • @Builder 애노테이션을 선언하면 전체 인자를 갖는 생성자를 자동으로 만듦
    • @AllArgsConstructor는 전체 인자를 갖는 생성자를 만드는데, 접근자를 private으로 설정할 경우, 외부에서 접근할 수 없도록 옵션을 걸 수 있음

 

 

참고 https://mangkyu.tistory.com/163

 

[Java] 빌더 패턴(Builder Pattern)을 사용해야 하는 이유

객체를 생성하기 위해서는 생성자 패턴, 정적 메소드 패턴, 수정자 패턴, 빌더 패턴 등을 사용할 수 있습니다. 개인적으로 객체를 생성할 때에는 반드시 빌더 패턴을 사용해야 한다고 생각하는

mangkyu.tistory.com

 

'study' 카테고리의 다른 글

map() 과 flatMap()  (0) 2022.05.17
ConcurrentHashMap  (0) 2022.05.03
JVM과 GC  (0) 2022.04.28
Stateless vs Stateful  (0) 2022.04.22
Memcached vs Redis  (0) 2022.04.22
공지사항
«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31