본문 바로가기
반응형
Design Pattern

빌더 패턴(Builder Pattern) 쓰는 이유, 장점, 단점, 사용법

by brightGarden02 2022. 11. 27.

빌더 패턴을 쓰는 이유:

생성자를 여러개 만들기 번거러움,

다른 개발자와 협력할 때 생성자가 여러개면 어떤 생성자를 써야할지 헷깔릴 수 있음,

생성자를 만들어도 null 값을 일일이 넣어야할 경우가 있을 수 있는데 번거러움

 

 

빌더 패턴 장점: 

생성자 만들기 편함

생성자 만들때 어떤 값을 넣을지 순서는 어떻게 할지 고려하지 않아도 됨

 

 

빌더 패턴 단점:

없는듯

 

 

빌더패턴 사용법(스프링):

1. 롬복(lombok) 설정

2. @SuperBuilder 어노테이션 사용

@Builder가 아닌 @SuperBuilder를 쓰는 이유

-> 부모인 BaseEntity를 상속받는 자식 객체인 Chef를 만들기 위함

-> 부모객체의 값도 입력하게 하기 위함

@Entity
@Getter
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder
public class Chef extends BaseEntity {

    private ChefRole chefRole;
    private FoodCategory foodCategory;

    @OneToMany(mappedBy = "chef")
    private List<Menu> menuList = new ArrayList<>();

}

 

 

부모 객체에서도 @SuperBuilder를 적는다

@SuperBuilder
@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
@NoArgsConstructor(access = AccessLevel.PROTECTED)
public abstract class BaseEntity {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column
    private Long id;

    @CreatedDate
    private LocalDateTime createDate;

    @LastModifiedDate
    private LocalDateTime modifyDate;
}

 

 

 

클라이언트 클래스에 있는 메소드에서 빌더를 통해 객체를 생성하였다.

private static void createKoreanChef() {
   Chef chef = Chef.builder()
         .chefRole(ChefRole.한식요리사)
         .foodCategory(FoodCategory.한식)
         .build();
   chefList.add(chef);
}

 

 

댓글


반응형
반응형