Builder.? 건축자?
빌더 패턴 (Builder Pattern) 이란, 초기화를 통한 input 데이터를 요청하는 대신에 input 값을 하나씩 제공하므로서 복잡한 객체를 구성하도록 해주는 패턴입니다.
이게 뭔말이지?
클래스 다이어그램을 먼저 보겠습니다.
Director
는 input을 받습니다. 그리고 Builder와 협력(?) 합니다. 보통 디렉터는 viewController나 Helper class가 됩니다.Product
는 복잡한 객체 입니다. 이건 구조체가될 수도 있고 클래스가 될 수도 있습니다. 그건 프로젝트에 따라 다를겁니다. 보통은 “모델 “ 의 역할을 합니다.Builder
는 input 을 하나씩 받습니다. 그리고 product들을 다룹니다. 보통은 class로 정의합니다.빌더패턴은 복합 “생성과정”과 “표현방법”을 분리합니다.
복합 객체에서 생성인자가 많을 때, 사용하면 좋습니다.
햄버거를 만든다고 가정합시다.
햄버거를 만들 때, 파트타이머에게 한번에 모든 재료를 주는 게 좋을까요?
아니면, 빵을 주고 고기를 주고 피글을 주고 케찹을 주고 양파를 주고 양상추를 주고 마요내즈를 주고 윗빵을 주는게 좋을까요.
물론 다줘도됩니다만, 하나씩 주는게 햄버거 만들어지는 흐름을 파악하기 쉽고,
변경해야할 부분이 생기면 어느부분을 변경해야할지 알기도 쉽죠.
빌더패턴도 마찬가지입니다.
“단계적으로 input을 주고 결과물을 산출한다.”
예제 코드는 gist에 올려두겠습니다.
차근차근 작성하시면, 충분히 이해될 내용이므로 설명은 생략합니다.
빌더패턴은 여러개의 input이 있을 때, 유용한 패턴입니다.
그렇기에 여러개의 인풋이 없거나, input을 차근차근 넣으면 문제가 생기는 경우 사용하면 곤란하겠죠.
만약 그런 상황이라면 init 메소드를 활용을 고려해보는게 좋습니다.
Q. 빌더패턴은 무엇인가?
Q. 빌더패턴은 언제 유용한가?
에 대한 대답을 할 수 있도록 글을 구성했습니다.
읽어주셔서 감사합니다.