📌빌더 패턴(Builder pattern)이란?
- 객체를 정의하고 그 객체를 생성할 때 보통 생성자를 통해 생성하는 것을 생각한다. 하지만 그 생성자를 통해 객체를 생성하는데 몇 가지 단점이 있어 객체를 생성하는 별도 builder를 두는 방법이 있는데 이를 빌더 패턴이라고 한다.
<예시 코드>
Bag bag = Bag.builder()
.name("name")
.money(1000)
.memo("memo")
.build();
- 객체를 생성할 수 있는 빌더를 builder()함수를 통해 얻고 거기에 세팅하고자 하는 값을 세팅하고 마지막에 build()를 통해 빌더를 작동시켜 객체를 생성한다.
🌏Builder를 써야하는 이유
1) 생성자 파라미터가 많을 경우 가독성이 좋지 않다.
- 빌더 패턴으로 구현하면 각 값들은 빌더의 각 값들의 이름 함수로 세팅이 되어 각각 무슨 값을 의미하는지 파악하기 쉽다.
- 같은 타입의 다른 변수의 값을 서로 바꿔 넣는 것을 방지할 수도 있다.
2) 어떤 값을 먼저 설정하던 상관 없다.
- 생성자의 경우 정해진 파라미터 순서대로 꼭 값을 넣어줘야 한다. 하지만 빌더 패턴은 빌더의 필드 이름으로 값을 설정하기 때문에 순서에 종속적이지 않다.
😉Builder 사용법
- 빌더 패턴을 적용할 객체에 @Builder 어노테이션을 달아준다.
- @Builder는 룸북의 어노테이션이다.
@Builder
public class Bag {
private String name;
private int money;
private STring memo;
}
- 어노테이션만 달면 빌더가 생기고 빌더를 통해 객체를 생성할 수 있다.
Bag bag = Bag.builder()
.name("name")
.money(1000)
.memo("memo")
.build();
✓ @Builder는 되도록 생성자 위에 다는 것을 추천한다.