Builder Pattern
- 복잡한 객체를 단계별로 구성하는 디자인 패턴
- 객체의 생성 과정과 표현 방법 분리하는 패턴
즉 객체 생성과 표현을 분리하는 것이 목적인 패턴입니다.
Problem
여러분은 혹시 미래에 어떤 집에서 살고 싶나요?
그 집이 주택이라면, 마당을 가진 집? 수영장을 가진 집?
아래 그림을 함께보며 이해해주세요.
만약 여러분이 House라는 객체를 만들려고 합니다. 이 때, 객체를 활용할 수 있는 모든 구성에 대해 서브클래스를 작성할 수 있습니다.
아래 그림처럼 말이죠.
House에 Garage를 추가한 객체 & House에 SwimmingPool을 추가한 객체 etc..
위 그림처럼 구현한다면... 얼마나 복잡한 프로그램이 될까요?
아니면 아래와 같이 구현할수도 있습니다.
매개변수에 집의 모든 구성품을 때려박는 거죠ㅎㅎ
.. 위의 결과는.. 여러분들도 다 아시죠?
이러한 경우, 대부분의 매개변수가 사용되지 않을 수 있기 때문에
생성자는 보기 싫고, 복잡해보이죠.
원문에서는 "the constructor calls pretty ugly"라고 표현했네요.
(저렇게 구현하던 과거의 나.. 반성 중..ㅎ)
Solution
이를 해결할 수 있는 패턴이 Builder Pattern입니다!
두둥!
이 패턴은 객체를 단계별로 구성할 수 있게 만듭니다.
그리고 Builder Pattern에는 Director가 존재합니다.
Director Class는 빌드 단계 실행 순서를 정의하고, Builder는 해당 단계의 구현을 제공합니다.
전체 다이어그램
- Builder : 빌더 인터페이스.
- ConcreteBuilder : 빌더 인터페이스 구현체. 부품을 합성하는 방식에 따라 여러 구현체를 만든다.
- Director : Builder를 사용해 객체를 생성한다.
- Product : Director가 Builder로 만들어낸 결과물.
'OLD_달려라 > 소프트웨어공학' 카테고리의 다른 글
Design Pattern ] Singleton Pattern (0) | 2020.07.02 |
---|---|
GUI Swing ] Factory Method Pattern (0) | 2020.07.01 |
Design Pattern] Abstract Factory (0) | 2020.06.28 |
Design Pattern] Factory Method (0) | 2020.06.27 |
댓글