brunch

You can make anything
by writing

C.S.Lewis

by 윤민섭 Nov 18. 2020

Builder Pattern

대신 좀 만들어줘 패턴

Builder pattern은 조금 복잡한 객체를 생성자에 여러 개의 파라미터를 넣지 않고 차례차례 값을 넣어주며 생성하는 것을 도와주는 디자인 패턴입니다.


클래스 다이어그램을 먼저 보겠습니다.



Director객체는 Product 객체를 사용해야 합니다.

Director객체는 Builder 객체를 사용해서 Product를 만들어 낼 것입니다.

Builder객체는 build() 함수를 통해 Product를 생성합니다 (두 객체가 dependency 관계인 이유입니다.)


코드로 보겠습니다.



Product를 ProductBuilder를 통해 생성하는 것을 확인할 수 있습니다. 왜 이렇게 구현하는 것일까요?


우선 Builder Pattern은 다른 언어(ex JAVA)에서 많이 사용됩니다. 사용하는 이유는 아래와 같습니다.


1. 생성자에서 파라미터의 수가 많아졌을 때 어떤 파라미터가 어떤 값을 의미하는지 헷갈린다.

2. 초기화하지 않아도 되는 값임에도 생성자에서 처리해줘야 하기 때문에 가독성이 떨어진다.


사실 Swift에서는 빌더 패턴을 사용하지 않아도 언어 특성상 1번과 2번 문제를 해결할 수 있습니다.

1번의 경우 함수의 파라미터마다 이름이 붙기 때문에 헷갈리지 않으며, 2번의 경우 default value를 생성자의 파라미터에 추가해주면 됩니다.


그렇기에 Swift에선 Builder 패턴을 많이 사용하지 않는 것으로 알고 있지만, 알아두면 좋은 디자인 패턴이라고 생각합니다.


읽어주셔서 고맙습니다.




Raywenderlich의 Design Patterns by Tutorials를 참고했습니다.

https://www.raywenderlich.com/books/design-patterns-by-tutorials/v3.0

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari