
A ,B , C,D ... N 개의 객체들간의 통신을 하려고 할때
그리고 이것들이 상속구조를 이루고 있다면 통신하기 위해 직접 연결 한다면 상당히 지저분한 상태에 이르고 만다
그래서 클래스 중계자(mediator) 하나를 둬서 변경 된 사항을 mediator 에게 던지고 적용시킬지니는 mediator 가 수행하는 패턴을
mediator 패턴 이라고 한다
observer 는 옵저버가 중점이고 mediator 는 mediator 가 중점이다
그래서 mediator 의 내부는 좀 복잡해 질 수 있고 통신할 것들에 대해 다 알고 있어야 한다
또한 mediator 와 연결될 다른 객체들도 mediator 를 연결해야 한다
다른 객채들과의 통신을 mediator 와 통신한다
장점 : 재사용이 쉬워진다 => A 객체만 재사용 하고 싶으면 A 하나 때내고 mediator 부분에서 A 에 대한 부분만 수정해 주면 됨으로
분산된 것을 한곳으로 모여줌 N:M 관계를 1:M 관계로 변경
차이:
Facade 와 차이점은 Facade는 일반적으로 단방향이지만 Mediator 는 양방향이다
차이:
Observer 는 중앙이 아닌 밖의 것이 중점이 된다
A 에서 값이 바뀌면 중계 해주는 곳에 A 가 알려주고 중계 해주는 곳이 나머지들에게 A 값이 바뀌었다고 알려주는 형태
구성형태는 Oberser 와 Mediator 와 같긴하다
변화 상태는 this 를 멤버함수 인자로 넘겨서 알리는 방법이 있다
활용
메신저 대화명 바꿀때
if A ,B 가 서로 친구 일때
중간 mediator 가 서로 연결된 친구라면 A 에서 대화명을 바꿨을때 바꾼 대화명을 B 에게 알려준다
또는 B 는 바뀌는게 싫다고 mediator 에게 요청하면 변경사항을 받지 않는 처리도 할 수 있다
기계가 여러대 있을때 기계 서로의 속도 제어등 전체 조정
하지만 각각의 기계가 각자 동작하진 않고 중앙관리 형태로 구성이 되야 한다는 것이 Mediator 패턴의 컨셉
'디자인패턴과방법론 > 디자인패턴' 카테고리의 다른 글
iterator 패턴, 스택제거시 삭제되는 포인터(like 스마트포인터) (0) | 2012.11.02 |
---|---|
interpreter 패턴 (0) | 2012.11.02 |
command 패턴 (0) | 2012.11.02 |
chain of responsibility 패턴 (0) | 2012.11.02 |
Strategy 패턴 (전략적 패턴) (0) | 2012.11.02 |