@Builder
는 디자인 패턴 중 빌더 패턴을 해당 클래스에서 사용할 수 있게 해주는 어노테이션이다.
왜 이 어노테이션을 사용해야 할까?
class Coffee {
int shots;
int water;
int milk;
int syrup;
boolean whippedCream;
}
Coffee americano = new Coffee(1, 150, null, 1, false);
우리는 클래스를 생성하는 부분이랑 사용하는 부분을 나눠서 구현하기 때문에 실제로 위 코드에서 americano
의 생성자에 들어간 것이 무슨 의미인지 저 생성자만 보고 직관적으로 이해하기가 힘들다. 그래서 생성자를 호출할 때마다 생성자의 각 파라미터가 의미하는 게 무엇인지 일일이 확인해줘야한다. 따라서 그만큼 실수할 가능성이 높아진다는 뜻이다.
Coffee americano = new Coffee(1, 150, null, 1, false);
Coffee americano = Coffee.bulider()
.shots(1)
.water(250)
.syrup(1)
.build();
Coffee latter = Coffee.bulider()
.milk(200)
.shots(1)
.water(50)
.whippedCream(true)
.syrup(2)
.build();
빌드패턴으로 생성한 인스턴스를 보자. 아무리 많은 속성들을 새로운 객체 안에 추가하더라도 숫자의 값이 무엇을 의미하는지 직관적으로 알 수 있다.
더 깊이 공부하고 싶으시다면 이 링크를... -> 근데영어임