[Design Pattern] 중재자 ( Mediator )
Design Pattern 2008. 5. 10. 00:11 |중재자 ( Mediator )
의도
- 한 집합에 속해 있는 객체의 상호작용을 캡슐화
- 객체 사이의 소결합 (loose coupling)
- 객체의 상호작용을 독립적으로 다양화 시킴
동기
- 객체 지향 개발 방법에 있어서 행동을 여러개의 객체로 분산시키고 있습니다.
- 분할된 객체들의 관리가 제대로 되지 못하면 객체 간 상호작용의 급증으로 인한 오류를 범할 수 있습니다.
MFC의 개발을 하다 보면 화면 UI 및 데이터간의 연동이 필요 하게 됩니다.
리스트 박스의 셀렉트가 되면 해당 에디터 박스에 출력을 하고, 그 반대의 경우도 존재 할 수 있습니다.
이러한 경우 객체 대 객체 간의 데이터 접근 방법을 사용하게 되면 결합도가 높아지면서 코드가 복잡해 지고,
재 사용성을 떨어 트리게 됩니다.
이때, 중재자 객체를 활용하면 여러 객체가 처리 하는 행동들을 하나의 객체에서 처리 하게 되면서 이런 문제점들을 해결할 수 있습니다.
중재자 객체는 객체 그룹 간의 상호작용을 제어하고 조화를 이루는 역활을 합니다.
즉, 객체 사이의 연결 정도가 줄어 들게 됩니다.
하나의 예를 들어 보겠습니다.
리스트 박스와 에디터 박스가 있다고 합시다.
- 리스트 상자는 지시자 객체에게 자신이 변경되었음을 통보 합니다.
- 지시자는 리스트 상자에서 선택된 부분이 무엇인지 알아옵니다.
- 지시자는 입력 창에 선택 부분을 전달합니다.
- 입력 창에는 어떤 값이 포함됩니다. 지시자는 관련된 버튼을 활성화 시킵니다.
UML 내용을 한번 볼께요.
자세한 소스 코드는 오늘은 올리기 힘들듯 합니다. -.-
한번 데모로 작성해 보고 올려야 할듯 합니다.