2016. 4. 28. 15:19

Builder 패턴

프로그래밍/C++ 2016. 4. 28. 15:19

* Builder Pattern - 빌더 패턴


- 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 

   서로 다른 표현 결과를 만들수 있게 하는 패턴

- 복잡한 객체 생성을 표현으로부터 분리

- 이렇게 함으로써 같은 생성 과정에서 다른 표현을 만들어냄


- 쉽게 말해서 하나의 객체를 생성할 때 객체를 이루는 구성요소들을 

  분리하여 객체의 세부 구성 요소 클래스들을 별도로 만들고

  그 구성 요소 클래스들을 조합하여 하나의 객체를 만듦

- 자동차를 만든다고 하면 자동차의 부품들을 모아서 하나의 자동차를 만듦


- Builder : 제품(객체)를 생성하는 추상 인터페이스

- Concrete Builder : Builder의 구현 클래스

다른 객체를 생성할 수 있도록 하는 구체적인 클래스

객체를 만들기 위해 부품을 생성하고 조립

- Director : 객체 생성의 정확한 순서를 다루는 부분에 책임

              ConcreteBuilder를 인자로 받아서 필요한 동작을 수행

- Product : Builder를 이용해서 Director가 만들어낸 최종 객체


- 빌더는 복잡한 객체를 한 단계 한 단계씨기 생성하는데에 초점을 맞춘다

- 추상 팩토리는 제품 객체들의 집단을 강조

- 생성되는 객체가 단일 객체이던지, 복잡한 객체던지 상관 없다

- 빌더는 마지막 단계에 반환하지만, 추상 팩토리가 하는 것처럼 

   제품을 바로 얻어냄

- 빌더는 주로 복잡한 객체를 생성(Composite)

- 설계는 팩토리 메서드를 사용해서 시작하지만 설계자가 어느 부분에서

  유연성에 따라 추상 팩토리, 프로토타입 또는 빌더 등으로 발전

- 빌더는 어떤 컴포넌트를 만드는지 정하기 위해 다른 패턴 중 하나 사용 

  추상 팩토리, 빌더, 프로토타입은 싱글톤을 구현에 사용

- 빌더는 Fluent Interface의 좋은 지원자