@Builder 패턴

hnk1022·2025년 2월 16일

정의

  • 객체 생성을 간편하게 하고, 특히 많은 필드를 가진 객체를 생성할 때 가독성과 유연성을 높여주는 디자인 패턴

특징

  • 복잡한 객체를 생성할 때 유용
  • 불변 객체(Immutable Object)를 만들 때 자주 사용

    < 불변 객체 생성 방법 >

    • 클래스의 필드에 final 선언
    • setter 메서드 생성 안하기
    • 클래스 레벨에 롬복의 @Value 선언하기
      • 롬복의 @Value 에너테이션
        • @Getter, @RequiredArgsConstructor, @ToString, @EqualsAndHashCode 등을 포함
        • 각 필드에 final 자동 선언 (final로 선언된 필드는 무조건 값을 초기화 해야한다)
        • @Getter와 @RequiredArgsConstructor가 포함되므로 final 필드에 대해 생성자 주입을 강제하고, getter 메서드를 자동으로 생성
    • 불변 객체는 운영체제의 동시성 문제, 성능과 관련 ( 추가 공부 필요 )
  • 일반적인 생성자와 다르게, 순서에 관계없이 필드값 초기화 가능
  • .builder()로 시작해서 .build()로 종료
  • 객체 생성 시, 특정 필드의 기본값 설정은 @Builder.Default 선언
  • 객체 생성 시, 특정 필드 값을 반드시 초기화 할 때 @NonNull 선언
  • @NoArgsConstructor와 같이 선언하면 컴파일 오류 발생

장점

  • 가독성 향상: 매개변수를 지정할 때, 각 필드의 의미를 명확하게 전달할 수 있습니다.
  • 유연성: 객체 생성 시 선택적인 필드를 설정할 수 있어, 매개변수의 개수가 많거나 모든 필드를 항상 설정할 필요가 없는 경우에 유용합니다.
    ( 값이 초기화되지 않은 필드는 기본값이 할당된다 )
  • 불변 객체: 필드 값을 변경할 수 없게 하여 불변 객체를 만들 수 있습니다.
  • 메서드 체이닝: 여러 메서드를 연속적으로 호출하는 방식으로 객체를 설정할 수 있습니다.
profile
코딩 공부장

0개의 댓글