본문 바로가기
개발/JAVA

[Java] [이펙티브 자바][02] 생성자에 매개변수가 많다면 빌더를 고려하라

by JaeHoist 2022. 12. 27.

서론

정적 팩터리와 생성자는 선택적 매개변수가 많을 때 적절히 대응하기 어렵다.

 

선택적 매개변수가 많을 때 방법

  1. 점층적 생성자 패턴
    1. 매개변수가 많아지면 코드를 작성하거나 읽기 어렵다
  2. 자바 빈즈 패턴 (setter 메서드 호출)
    1. 객체 하나 만들기 위해, 메서드 여러번 호출
    2. 객체가 완전히 생성되기 전까지 일관성이 무너진 상태에 놓임
  3. 빌더 패턴
    1. 필요한 객체를 직접 만드는 대신,
      필수 매개변수만으로 생성자(or 정적팩토리 메서드)를 호출해 빌더 객체를 얻는다.
    2. 빌더 객체가 제공하는 일종의 setter 메서드들로 원하는 선택 매개변수들을 설정
    3. 최종적으로 build 매서드를 호출해 불변인 객체를 얻는다.

 

핵심 정리

생성자나 정적 팩터리가 처리해야 할 매개변수가 많다면 빌더 패턴을 선택하는게 더 낫다.

점층적 생성자 패턴의 안전성과 자바 빈즈 패턴의 가독성을 겸비했다.