brunch

You can make anything
by writing

C.S.Lewis

by eddward park Feb 07. 2021

Builder Pattern

생성패턴중 빌터패턴에 대해서

피그마로 직접 그린 이미지

https://brunch.co.kr/@eddwardpark/38


빌더 패턴(Builder pattern)이란 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴이다.


위키에 정의된 빌더패턴이다.


여러분이 개발자가 아닌 이상 외계어로 들릴것이다.


필자또한 20개가 넘는 객체지향 패턴중 실제 사용해 보고 이해하는 패턴은 몇개 없다.


직접 사용해 보기전에는 이런 개념들이 머리속에 잘 들어오지 않는다.


필자는 앞으로 우리 주변의 상황을 시각화하여 각각의 객체지향 패턴 개념을 정리해보고자 한다.


빌더 패턴을 시작으로 필자와 함께 여러 패턴들을 같이 알아가 보자.



피그마로 직접 그린 이미지


위의 이미지는 빌더 패턴을 이미지로 그려본거다. 


푸드코트에서 캐셔에게 불고기 햄버거 세트를 주문한다.

주문은 햄버거에 치즈 1장, 피클은 빼고, 베이컨 추가하고 음료는 사이다로 감튀는 소금 없는것을 요청한다.

캐셔는 햄버거 점원에게 주문사항을 건넨다.

햄버거 점원은 주문 내용에 맞게 빵을 깔고 해당하는 토핑들을 조합하여 내가 원하는 햄버거를 만든다.

그리고 사이다를 준비하고 소금 안친 감튀를 준비하여 '에드워드 팍님~ 주문한 햄버거 나왔습니다.'를 외친다.

햄버거 매장에서 준비된 내용물을 받아 맛있게 먹는다.


이런 일련의 과정속에 햄버거를 만드는 과정이 빌더 패턴과 닮아있다.


햄버거 점원은 주문자가 원하는 햄버거에 따라 각각의 재료들을 단계별로 구성하여 햄버거를 만든다.


빌더 역할을 햄버거 점원이 하는것이다.


빌더의 역할은 주문자가 원하는 것을 잘 만들면 되는것이다.


여기서 좀더 살펴볼 부분은 캐셔이다.


캐셔는 푸드코드에서 햄버거 주문은 햄버거 점원에게, 만두 주문은 만두 점원에게, 초밥 주문은 초밥 점원에게 전달한다.


캐셔는 디렉터로서 클라이언트와 빌더를 이어주는 역할을 하고 있다.


이와는 대조적으로 동네 분식집에서 만두를 시키면 사장님이 주문을 받고 주문한 만두를 만든다.


디렉터는 푸드코트처럼 복잡한 음식 주문을 처리하는데 있어 필요하지만 분식집에서는 필요가 없게 된다.


디렉터는 옵션인 것이다.



피그마로 직접 그린 이미지

https://github.com/fbeline/design-patterns-JS/blob/master/src/creational/builder/builder.js


위의 이미지는 빌더 예제 코드이다.


브라우저에서 서버에 요청을 보낼때 url, method, payload 의 내용을 순차적으로 생성하여 요청을 보낸다.

url은 브라우저에서 요청을 보낼 서버의 주소이다.

https://brunch.co.kr/@eddwardpark/35

method는 서버에 요청을 보낼때 CRUD중 보내고자 하는 목적에 맞게 설정해야한다.

https://brunch.co.kr/@eddwardpark/19

payload는 요청을 보내는 내용이다.




여러분이 고속도로 휴계소에 들러 음식 주문할때 빌더패턴을 떠올린다면 자연스럽게 객체재향의 Builder Pattern을 익히게 되는거다.

매거진의 이전글 SOLID 객체지향 설계 원칙
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari