builder 패턴
- 복잡한 Object들을 단계별로 구축할 수 있는 생성 디자인 패턴
- 동일한 구성코드를 사용하여 다양한 타입과 표현을 제공
- 생성자를 가독성 좋게 만들어주는 패턴이라고 할 수 있음
- 객체를 생성할 수 있는 builder() 함수를 통해 얻고 거기에 셋팅하고자 하는 값을 셋팅하고 마지막에 build()를 통해 빌더를 작동시켜 객체를 생성
@Builder
Bag bag = Bag.builder()
.name("name")
.money(10000)
.memo("memo")
.build();
장점
- 필요한 데이터만 설정 가능
- 유연성 확보 (설정 값의 순서가 어떠하든 상관 없다)
- 가독성을 높임
- 불변성 확보
옵션
builderMethodName
- @Builder 어노테이션을 사용하면 빌더를 생성하는 메서드의 이름은 기본 값인 builder()이다. 이를 새롭게 네이밍 할 수 있는 어노테이션 값이다.
- 보통 기본 값인 builder()를 그대로 사용한다.
Bag bag = Bag.builder()
buildMethodName
- builder()로 얻은 빌더에 필드 값들을 입력하고 마지막에 객체를 생성하는 동작인 빌드 메서드의 이름을 네이밍 할 수 있는 어노테이션
- 기본 값은 build()로 create() 등 필요한대로 네이밍하면 된다. 이에 맞춰 빌더 메소드도 같이 리네이밍
Bag bag = Bag.builder()
builder();
builderClassName (무슨 말인지 모르겠음...)
-
toBuilder (무슨 말인지 모름..2)
- boolean 값으로 설정할 수 있는 어노테이션 값으로 기본 값은 false인데, 이 값을 true로 설정 시 빌더로 만든 인스턴스에서 toBuilder() 메서드를 호출해 그 인스턴스 값을 베이스로 빌더 패턴으로 새로운 인스턴스를 생성할 수 있다.
- 기본 값인 false로 설정 시 toBuilder() 메서드 자체가 존재하지 않는 메서드라는 에러가 발생
Bag bag1 = Bag.builer()
.name("name")
.money(10000)
.memo("memo")
.build();
Bag bag2 = bag1.toBuilder().money(8000).build();
'ssung_항해일지 > 항해99_Spring_입문, 숙련, 심화' 카테고리의 다른 글
spring - 15일차 (0) | 2023.02.19 |
---|---|
spring - 14일차 (0) | 2023.02.18 |
spring - 11일차 (0) | 2023.02.15 |
spring - 10일차 (0) | 2023.02.14 |
Spring - 9일차 (0) | 2023.02.11 |