Skip to content

Latest commit

 

History

History
 
 

item02

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 

생성자에 매개변수가 많다면 빌더를 고려하라.


요약

생성자나 정적 팩터리가 처리해야 할 매개변수가 많다면 빌더 패턴을 선택하는게 더 낫 다. 매개변수 중 다수가 필수가 아니거나 같은 타입이면 특히 더 그렇다. 빌더는 점층적 생성자보다 클라이언트 코드를 읽고 쓰기가 훨씬 간결하고, setter방식(자바빈즈) 보다 훨씬 안전하다.

장점

  • 매개변수가 많을 경우, 코드를 읽고 이해하기 매우 쉽다.
  • setter를 이용한 방식(자바빈즈)의 경우, 객체의 불변성을 보장할 수가 없다. public으로 setter가 공개 되어 있기 때문이다. 이에 비해, 빌더 패턴을 사용할 경우 불변 객체로 만들기 쉽다.
  • 빌더 패턴은 계층적으로 설계된 클래스와 함께 쓰기에 좋다. (빌더 패턴은 항상 피자를 떠올리면 쉽게 이해가 잘 된다) (피자 예제가 유독 많다)

단점

  • 빌더 패턴은 장황하다(코드량이 많다) : @builder는 어떤가, API는 시간이 지날수록 매개변수가 많아 질것이다.
  • 빌더클래스부터 생성해야한다(빌더 생성비용) : 성능에 매우 민감하다면 문제가 될수도 있다.