-
[TIL] Builder 패턴 사용하기TIL(Today I Learned) 2023. 2. 13. 23:54
*20230213의 회고
팀 프로젝트를 진행하던 중 생성자로 매개변수를 많이 받는 생성자를 사용하게 되었다. 팀원분들이 이럴 때 빌더패턴을 사용하면 좋다고 말해주셔서, 빌더패턴에 대해 공부하게 되었다.
1. 빌더패턴 이란?
- 복합 객체의 생성 과정에서 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다.
- 쉽게 말하자면, 객체를 생성할 때 생성자로 내가 받아야 하는 매개변수의 개수나 종류별로 생성자를 만들어주지 않아도 동일한 생성절차를 거쳐 내가 필요한 생성자만 표현해낼 수 있다는 뜻.
2. 빌더패턴의 장점
- 필요한 데이터만 설정 가능
- 생성자의 매개변수의 인자가 의미하는 바가 무엇인지 한눈에 파악 가능
- 변경 가능성을 최소화 할 수 있음 (setter 사용 X)
3. @Builder
- 스프링부트에서는 빌더패턴을 사용하여 객체를 생성하게 하고 싶은 클래스에 롬복 어노테이션인 @Builder 를 붙여줌으로써 Builder 패턴을 따로 구현해주지 않고도 쉽게 사용할 수 있다.
아래 코드는 오늘 내가 생성자를 통해 만든 객체를 @Bulider 어노테이션을 통해 패턴으로 객체를 생성하게 수정한 코드이다.
// Builder 사용 전 // 각각의 매개변수에 어떤 걸 의미하는 지 알기 힘들고, 매개변수의 위치가 바뀌어서 값이 들어간다면 객체가 잘못 생성될 가능성이 있다. Order order = new Order(userId, realName, phoneNumber, giftCardId, purchasePrice); // Builder 사용 후 // 생성자의 각각이 의미하는 매개변수에 어떤 값을 넣어줘야 할 지 직관적으로 알 수 있다. Order order = Order.builder() .userId(userId) .realName(realName) .phoneNumber(phoneNumber) .giftCardId(giftCardId) .purchasePrice(purchasePrice) .build();
'TIL(Today I Learned)' 카테고리의 다른 글
[TIL] Spring Boot 의 Ambiguous handler methods mapped for 에러 (2) 2023.02.15 [TIL] @Builder 와 @NoArgsConstructor, @AllArgsConstructor (0) 2023.02.14 [TIL] Controller 에서 Entity 를 그냥 반환하면 안되는 이유 2가지 (0) 2023.01.30 [TIL] 엔티티와 테이블의 차이 (0) 2023.01.26 [TIL] DTO에 왜 @Getter 어노테이션이 필요할까...? (0) 2023.01.18