Definition
빌더(Builder)는 복잡한 객체를 단계별로 구성할 수 있는 패턴이다. 동일한 구성 코드를 사용하여 객체의 다양한 유형과 표현을 생성할 수 있다.
Creational Patterns
Situation
복합 객체 구조를 구축하는 용도로 많이 쓰임
제품을 여러 단계로 나눠서 만들도록 제품 생산 단계를 캡슐화 하고 싶을 때
Structure
Pros
복합 객체 생성 과정을 캡슐화 한다.
여러 단계와 다양한 절차를 거쳐 객체를 만들 수 있다 (팩토리 패턴은 한 단계에서 모든 걸 처리)
제품의 내부 구조를 클라이언트로부터 보호할 수 있다.
클라이언트는 추상 인터페이스만 볼 수 있기에 제품을 구현한 코드를 쉽게 바꿀 수 있다.
Cons
팩토리를 사용할 때 보다 객체를 만들 때 클라이언트에 관해 더 많이 알아야 한다.
비슷한 패턴
많은 디자인이 Factory Method(덜 복잡하고 하위 클래스를 통해 사용자 정의 가능)를 사용하여 시작하고, Abstract Factory, Prototype 또는 Builder(더 유연하지만 더 복잡함)로 발전한다.
Builder는 복잡한 객체를 단계별로 구성하는 데 중점을 둔다. Abstract Factory는 관련 객체의 패밀리 생성을 전문으로 한다. Abstract Factory는 제품을 즉시 반환하지만 Builder를 사용하면 제품을 가져오기 전에 몇 가지 추가 구성 단계를 실행할 수 있다.
재귀적으로 작동하도록 구성 단계를 프로그래밍 할 수 있으므로 복잡한 Composite 트리를 만들 때 Builder를 사용할 수 있다.
Builder와 Bride를 결합할 수 있다: director 클래스는 추상화의 역할을 하고 다른 builder는 구현의 역할을 한다.
Abstract Factory, Builder, Prototype은 모두 Singleton으로 구현될 수 있다.
헤드퍼스트 디자인패턴 개정판 - 에릭 프리먼
https://refactoring.guru/design-patterns/builder
'Design Pattern' 카테고리의 다른 글
[Design Pattern] 중재자 패턴(Mediator Pattern)에 대해 알아보자 (0) | 2022.08.02 |
---|---|
[Design Pattern] 책임 연쇄 패턴(Chain of Reponsibility Pattern)에 대해 알아보자 (0) | 2022.07.29 |
[Design Pattern] 프록시 패턴(Proxy Pattern)에 대해 알아보자 (0) | 2022.07.25 |
[Design Pattern] 상태 패턴(State Pattern)에 대해 알아보자 (0) | 2022.07.19 |
[Design Pattern] 컴포지트 패턴(Composite Pattern)에 대해 알아보자 (0) | 2022.07.16 |
댓글