19. 중재자 패턴(Mediator Pattern) 설계

19. 3 디자인

중재자 패턴에 대한 설명을 위한 예제는 카메라의 반 자동 모드에서 중재자를 통해 조리개 값의 변화와 셔터 스피드의 변화에 대한 상호작용을 하는 프로그램을 작성해 볼게요.

프로그램에는 사용자와 상호작용을 하는 Camera 개체가 있습니다. Camera 개체 내부에는 내부 중재자 개체인 InnerMode 형식의 개체가 있고 셔터 스피드를 관리하는 Shutter, 조리개를 관리하는 Iris라 정하였습니다. Camera 형식의 개체는 내부에 InnerMediator 개체와 Iris, Shutter 개체로 구성되어 있습니다. 사용자에 의해 촬영 모드가 변경 요청이 오면 이를 InnerMediator 개체에게 전달합니다. 그리고, 셔터 스피드 값이나 조리개의 F값을 변경하면 Shutter 개체와 Iris 개체에게 전달합니다.

중재자 개체가 없다면 Shutter 개체는 셔터 스피드 값을 변경 요청에 대한 처리를 함에 있어 촬영 모드를 확인하여 셔터 스피드 우선 모드일 경우에는 Iris 개체에게 자신의 셔터 스피드 값이 변경되었음을 통보해야 했습니다. 이제는 Shutter 개체는 셔터 스피드 값이 변경되면 단순히 중재자 개체인 mediator 에게 변경되었음을 통보하기만 하면 됩니다. Iris 개체의 경우도 조리개의 F값이 변경될 경우 이에 대한 정보를 mediator에게 통보만 하면 됩니다. 카메라 내부에 있는 중재자 개체인 InnerMediator 개체는 Shutter 개체나 Iris 개체에 의해 값이 변경되었음을 통보받았을 때 촬영 모드를 확인하여 상대 개체에게 전달할 여부를 판단하여 수행하게 됩니다. 결국 Shutter, Iris 사이의 복잡한 상호작용을 중재자 개체가 담당하는 것이죠.

[그림] 중재자 패턴 클래스 다이어그램
[그림] 중재자 패턴 클래스 다이어그램