GSI

중재자 ( Mediator )

의도

  • 한 집합에 속해 있는 객체의 상호작용을 캡슐화
  • 객체 사이의 소결합 (loose coupling)
  • 객체의 상호작용을 독립적으로 다양화 시킴

동기

  • 객체 지향 개발 방법에 있어서 행동을 여러개의 객체로 분산시키고 있습니다.
  • 분할된 객체들의 관리가 제대로 되지 못하면 객체 간 상호작용의 급증으로 인한 오류를 범할 수 있습니다.

MFC의 개발을 하다 보면 화면 UI 및 데이터간의 연동이 필요 하게 됩니다.
리스트 박스의 셀렉트가 되면 해당 에디터 박스에 출력을 하고, 그 반대의 경우도 존재 할 수 있습니다.
이러한 경우 객체 대 객체 간의 데이터 접근 방법을 사용하게 되면 결합도가 높아지면서 코드가 복잡해 지고,
재 사용성을 떨어 트리게 됩니다.

이때, 중재자 객체를 활용하면 여러 객체가 처리 하는 행동들을 하나의 객체에서 처리 하게 되면서 이런 문제점들을 해결할 수 있습니다.

중재자 객체는 객체 그룹 간의 상호작용을 제어하고 조화를 이루는 역활을 합니다.
즉, 객체 사이의 연결 정도가 줄어 들게 됩니다.

하나의 예를 들어 보겠습니다.
리스트 박스와 에디터 박스가 있다고 합시다.

  1. 리스트 상자는 지시자 객체에게 자신이 변경되었음을 통보 합니다.
  2. 지시자는 리스트 상자에서 선택된 부분이 무엇인지 알아옵니다.
  3. 지시자는 입력 창에 선택 부분을 전달합니다.
  4. 입력 창에는 어떤 값이 포함됩니다. 지시자는 관련된 버튼을 활성화 시킵니다.

UML 내용을 한번 볼께요.

사용자 삽입 이미지

위의 것은 실제적인 구현한 내용을 토대로 제작된 UML 과 아래의 기본 구조모양의 UML을 보실 수 있습니다.

자세한 소스 코드는 오늘은 올리기 힘들듯 합니다. -.-
한번 데모로 작성해 보고 올려야 할듯 합니다.
Posted by gsi
: