Constructor Overloading
👉 복합 객체의 생성 과정과 표현 방법을 분리하여 동일한 생성 절차에서 서로 다른 표현 결과를 만들 수 있게 하는 패턴 이다. 직접 구현할 일은 드물지도 모르지만, 프레임워크에서 제공해주면 생각보다 흔하게 쓴다.
파이썬에서는 keyword 파라미터를 제공해주기 때문에, 굳이 필요는 없다.
구성요소 | 역할 |
---|---|
Builder | 객체를 작성하기 위한 인터페이스를 정의함. 객체의 각 부분(part)를 만들기 위한 추상메서드(buildPart())을 선언함. 마지막 결과를 얻기 위한 메서드(getResult())를 정의함. |
ConcreteBuilder | Builder 인터페이스를 구현함. |
Director | Builder 인터페이스를 사용해서 객체를 생성. 각 부분을 조립하는 메서드(construct())를 Client에 제공함. |
Product | Builder을 통해 생성되는 복합 객체 |
빌더 패턴은 다음과 같은 상황일 때 사용하면 효과적이다.
복합 객체를 생성하는 알고리즘이 복합 객체를 구성하는 요소 객체들이 무엇이든 이들 내부에서의 조립 방법과 독립적일 때.
합성할 객체들의 표현이 서로 다르더라도 생성 절차에서 이를 지원해 줘야 할 때.
필요한 데이터만 설정할 수 있다.
유연성을 확보할 수 있다.
가독성을 높일 수 있다.
변경 가능성을 최소화할 수 있다.