본문 바로가기
OLD_달려라/소프트웨어공학

Design Pattern] Builder

by 달승 2020. 7. 2.
 

Builder

Say you have a constructor with ten optional parameters. Calling such a beast is very inconvenient; therefore, you overload the constructor and create several shorter versions with fewer parameters. These constructors still refer to the main one, passing s

refactoring.guru

 

빌더 패턴(Builder Pattern)

객체의 생성 방법과 표현 방법을 분리한다

johngrib.github.io

 

 

 



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

댓글