* Builder Pattern - 빌더 패턴
- 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서
서로 다른 표현 결과를 만들수 있게 하는 패턴
- 복잡한 객체 생성을 표현으로부터 분리
- 이렇게 함으로써 같은 생성 과정에서 다른 표현을 만들어냄
- 쉽게 말해서 하나의 객체를 생성할 때 객체를 이루는 구성요소들을
분리하여 객체의 세부 구성 요소 클래스들을 별도로 만들고
그 구성 요소 클래스들을 조합하여 하나의 객체를 만듦
- 자동차를 만든다고 하면 자동차의 부품들을 모아서 하나의 자동차를 만듦
- Builder : 제품(객체)를 생성하는 추상 인터페이스
- Concrete Builder : Builder의 구현 클래스
다른 객체를 생성할 수 있도록 하는 구체적인 클래스
객체를 만들기 위해 부품을 생성하고 조립
- Director : 객체 생성의 정확한 순서를 다루는 부분에 책임
ConcreteBuilder를 인자로 받아서 필요한 동작을 수행
- Product : Builder를 이용해서 Director가 만들어낸 최종 객체
- 빌더는 복잡한 객체를 한 단계 한 단계씨기 생성하는데에 초점을 맞춘다
- 추상 팩토리는 제품 객체들의 집단을 강조
- 생성되는 객체가 단일 객체이던지, 복잡한 객체던지 상관 없다
- 빌더는 마지막 단계에 반환하지만, 추상 팩토리가 하는 것처럼
제품을 바로 얻어냄
- 빌더는 주로 복잡한 객체를 생성(Composite)
- 설계는 팩토리 메서드를 사용해서 시작하지만 설계자가 어느 부분에서
유연성에 따라 추상 팩토리, 프로토타입 또는 빌더 등으로 발전
- 빌더는 어떤 컴포넌트를 만드는지 정하기 위해 다른 패턴 중 하나 사용
추상 팩토리, 빌더, 프로토타입은 싱글톤을 구현에 사용
- 빌더는 Fluent Interface의 좋은 지원자