@Builder / 빌더패턴

인철·2023년 10월 18일
0

Spring

목록 보기
41/48

@Builder

정의

  • 빌더 패턴을 사용하여 객체를 생성할 수 있는 빌더 클래스 생성

빌더패턴

정의

  • 객체의 생성과 초기화를 더 쉽게 만들기 위한 디자인 패턴
  • 객체를 생성할 때 여러 개의 매개변수를 가진 생성자를 사용하는 대신, 각각의 매개변수를 명시적으로 설정 가능
  • 객체의 생성과정이 더 명확해지고 가독성이 높아짐

예시 코드

@Builder
public class Member {
    private Long id;
    private String username;
    private String password;
    private String nickname;
} code 생성
Member member = Member.builder()
    .id(1L)
    .username("example")
    .password("password123")
    .nickname("John Doe")
    .build();
    빌더패턴을 자동으로 생성

장점

  • 많은 수의 매개변수를 갖는 생성자를 사용하지 않아도 객체 생성 가능
  • 가독성이 향상되며 코드 간결화
  • 필요한 필드에 대해서만 메서드 체이닝 방식으로 값 설정 가능
  • 불변성 유지

주의할 점

  • 빌더 클래스를 별도로 작성하지 않아도 되지만, 복잡한 초기화 로직이 있는 경우에는 제대로 처리 x
  • 불변성을 유지할 수 있지만, 객체의 상태에 런타임에 변경 x
  • 해당 어노테이션의 동작 방식을 명확이 이해 필요

안되는 상황

  • 복잡한 초기화 로직 : 일반적으로 간단한 객체 초기화에 유용하지만, 복잡한 초기화 로직이 있는 경우에는 적합하지 않음
  • 불변성이 중요한 경우 : 런타임에 상태가 변경될 수 있기 때문에 불변성을 보장하려면 추가 조치 필요
  • 성능에 민감한 상황 : 추가적인 오버헤드 발생 가능
  • 특정 라이브러리 호환성 : 일부 라이브러리 프레임워크는 작동 안되는 경우 있음
profile
같은글이있어도양해부탁드려요(킁킁)

0개의 댓글