개발자 기초부터 시작하기

생성패턴(Creational Pattern) - Builder Pattern 본문

스터디/Gof 디자인 패턴

생성패턴(Creational Pattern) - Builder Pattern

뉴비늅 2019. 5. 9. 00:00

<!doctype html>

 

생성패턴(Creational Pattern) - Builder Pattern

 

목적

객체의 construction 과정과 객체의 representation을 분리

이렇게 분리함으로 하나의 construction 과정을 이용해 서로 다른 형태의 representation 을 이용할 수 있음 => 하나의 Director로 상위 Builder에 표현된 다른 하위 Builder를 이용할 수 있음.

복잡한 객체의 단계별 생성

각기 다른 능력을 가진 객체를 생성하는데 있어서 통일 된 방식을 제공한다는 것.

 

 

UML Diagram

1556019481358
  • Builder

    • Product 객체의 부분을 생성하기위한 추상 인터페이스를 지정합니다.
  • ConcreteBuilder

    • Builder 인터페이스를 구현하여 제품의 일부를 구성하고 어셈블합니다.
    • 작성한 표현을 정의하고 추적합니다
    • 제품 검색을위한 인터페이스를 제공합니다.
  • Director

    • Builder 인터페이스를 사용하여 객체를 생성합니다.
  • Product

    • 생성중인 복합 객체를 나타냅니다. ConcreteBuilder는 제품의 내부 표현을 작성하고 조립 과정을 정의합니다.
    • 최종 결과로 부품을 조립하기위한 인터페이스를 포함하여 구성 부품을 정의하는 클래스를 포함합니다.

 

Builder Pattern 을 RTF 문서판독기에 적용한 모습

1556019620816

 

적용 내용

  • RTFReader = Director // Product = 결과물 // Builder = TextConverter // ConcreteBuilder = 각 Converter

  • 하나의 생성과정에 다른 능력을 가진 객체를 생성하기 위해 인터페이스로 구현된 TextConverter가 필요

  • 그 인터페이스를 통해 상세 구현체를 알 필요 없이 통일된 방식 그대로를 생성해 줄 뿐(상세 구현체는 client 결정)

  • 다른 예로 하나씩 따로 따로 내부의 객체를 생성해서 하나로 묶거나 리턴하는 식으로도 많이 활용된다.

 

자바에서의 빌더 패턴

회원가입 에 필요한 Member 객체를 만드는데 아이디와 패스워드만 필수정보이고, 나머지는 입력하지 않아도 상관없을때 빌더패턴을 유용하게 활용할 수 있다.

 

 
 
 
 
 
 
 
 

 

활용 결과

 
 
 
 

 

 

빌더 패턴의 장단점

  • 장점

    • 복합 객체가 생성되는 과정을 캡슐화합니다.
    • 여러 단계와 다양한 절차를 통해 다양한 객체를 만들 수 있다.
    • 제품의 내부 구조를 보호할 수 있다.
    • 추상 인터페이스만 볼 수 있기 때문에 구현한 코드를 쉽게 바꿀 수 있다.

 

  • 단점

    • 사용자는 제품의 내부 구조를 정의한 크래스는 전혀 모른채 빌더와의 상호작용만으로 구성됨
    • 복합 객체 구조를 구축하기 위한 용도로 많이 쓰입니다.
    • 팩토리를 사용하는 경우에 비해 객체를 만들기 위해서 클라이언트에 대해 더 많이 알아야 함.

 

참고자료

Comments