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

한지연·2023년 2월 16일
0

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

점층적 생성자 패턴

: 필수 매개변수만 받는 생성자, 필수 매개 변수와 선택 매개변수 1개를 받는 생성자, 선택 매개변수를 2개까지 받는 생성자, ... 형태로 선택 매개변수를 전부 다 받는 생성자까지 늘려가는 방식
: 확장이 어려움


자바빈즈 패턴

: 매개변수가 없는 생성자로 객체를 만든 후 세터 메서드들을 호출해 원하는 매개변수의 값을 설정하는 방식
: 일관성이 깨지고, 불변으로 만들 수 없음


빌더 패턴

: 클라이언트는 필요한 객체를 직접 만드는 대신 필수 매개변수만으로 생성자(or 정적팩터리)를 호출해 빌더 객체를 얻음
: 점층적 생성자 패턴과 자바빈즈 패턴의 장점만 취함
: 계층적으로 설계된 클래스와 함께 쓰기 좋음
: 성능에 민감한 상황일 경우 빌더 사용이 문제가 될 수도 있음


builder로 객체 생성

    NutritionFacts cocaCola = new NutritionFacts.Builder(240, 8)
                .calories(100).sodium(35).carbohydrate(27).build();

핵심정리

  • 생성자나 정적 팩터리가 처리해야 할 매개변수가 많다면 빌더 패턴을 선택하는 것이 좋음
  • 빌더는 클라이언트 코드를 읽고 쓰기 간결하고 안전함
profile
배우고 활용하는 것을 즐기는 개발자, 한지연입니다!

0개의 댓글