빌더는 복잡한 객체들을 단계별로 생성할 수 있도록 하는 생성 디자인 패턴입니다.
다른 생성 패턴과 달리 빌더 패턴은 제품들에 공통 인터페이스를 요구하지 않습니다. 이를 통해 같은 생성공정을 사용하여 다양한 제품을 생산할 수 있습니다.
복잡도:
인기도:
사용 예시들: 빌더 패턴은 자바 개발자들에게 잘 알려진 패턴이며, 가능한 설정 옵션이 많은 객체를 만들어야 할 때 특히 유용합니다.
빌더는 자바 코어 라이브러리에서 널리 사용됩니다.
식별법: 빌더 패턴은 하나의 생성 메서드와 결과 객체를 설정하기 위한 여러 메서드가 있는 클래스가 있습니다. 또 빌더 메서드들은 자주 사슬식 연결을 지원합니다 (예: someBuilder.setValueA(1).setValueB(2).create()
).
단계별 자동차 생성
이 예시에서의 빌더 패턴은 다양한 자동차 모델을 단계별로 생성할 수 있습니다.
이 예시는 또 빌더가 어떻게 같은 생성 단계들을 사용하여 다양한 종류의 제품들(예: 자동차 매뉴얼)을 생성하는 방법을 보여줍니다.
디렉터는 생성 순서를 통제하며 특정 자동차 모델을 생성하기 위해 어떤 특정 생성 단계를 호출해야 하는지를 알고 있습니다. 또 디렉터는 빌더들의 공통 인터페이스를 통해서만 빌더들과 함께 작동하며 이는 다양한 유형의 빌더들을 디렉터에게 전달할 수 있도록 합니다.
최종 결과는 빌더 객체에서부터 가져옵니다. 왜냐하면 디렉터는 결과 제품의 유형을 알 수 없기 때문입니다. 빌더 객체만이 자신이 정확히 무엇을 생성하는지 압니다.
builders
builders/Builder.java: 공통 빌더 인터페이스
builders/CarBuilder.java: 자동차의 빌더
builders/CarManualBuilder.java: 자동차 매뉴얼의 빌더
cars
cars/Car.java: 자동차 제품
cars/Manual.java: 자동차 매뉴얼 제품
cars/CarType.java
components
components/Engine.java: 제품 특성 1
components/GPSNavigator.java: 제품 특성 2
components/Transmission.java: 제품 특성 3
components/TripComputer.java: 제품 특성 4
director
director/Director.java: 디렉터는 빌더들을 제어합니다
Demo.java: 클라이언트 코드
OutputDemo.txt: 실행 결과