2. 빌더 패턴(Builder Pattern) 설계

2. 3 디자인

  이번에는 카메라와 사진, 사진 빌더로 빌더 패턴에 대한 예를 들려고 합니다. 카메라는 사진을 찍는 기능이 있고 효과를 줄 수 있게 하려고 합니다. 대신 효과를 주는 부분을 사진 빌더를 통해 수행하게 할 것입니다.

카메라는 디렉터 역할을 하며 Camera 이름의 클래스로 구현하겠습니다. 사진은 카메라를 통해 사용자가 얻고자 하는 개체로 Picture라고 정하겠습니다.

사진 빌더는 빛을 모아서 피사체를 상으로 맺히는 기능과 이미지를 수정하는 기능이 있게 합시다. 그리고 이러한 기능을 약속한 추상 클래스 PictureBuilder를 정의할게요. 빌더의 종류에는 낮에 사용하는 SmoothBuilder와 밤에 사용하는 REPreventBuilder를 만듭시다.

낮에 사용하는 SmoothBuiler의 빛을 모아서 상을 맺히는 기능은 원본 피사체가 그대로 이미지로 맺히게 구현하고 수정하는 기능은 날카로운 부분을 부드럽게 바꾸게 할게요. 밤에 사용하는 REPreventBuilder의 빛을 모아서 상을 맺히는 기능은 일정 범위내에 있는 피사체만 이미지로 맺히게 구현하고 수정하는 기능은 적목을 일반적인 눈으로 수정하게 구현할게요.

빌터패턴 클래스 다이어그램
[그림] 빌터패턴 클래스 다이어그램