디자인 모드 - 중개자
5527 단어 디자인 모드
와 의 독서 노트 를 참고 하 세 요.
1. 의도
중개인 대상 으로 일련의 대상 의 상호작용 을 밀봉 하 다.중개 자 는 각 대상 이 명시 적 으로 서로 인용 하지 않 아 도 되 고 결합 이 느슨 해 지 며 독립 적 으로 그들의 상호작용 을 바 꿀 수 있다.
2. 적용 성
4. 567917. 한 조 의 대상 은 정 의 는 좋 지만 복잡 한 방식 으로 통신 을 한다.상호 의존 관계 구조 가 혼 란 스 럽 고 이해 하기 어렵다
4. 567917. 한 대상 이 다른 대상 을 인용 하고 이 대상 과 직접 통신 하여 이 대상 을 재 활용 하기 어렵다
4. 567917. 여러 가지 유형 에 분포 하 는 행 위 를 만 들 고 싶 지만 너무 많은 자 류 를 만 들 고 싶 지 않다
3. 구조
4. 참여 자
Mediatord (중개자)
——중개인 은 동료 (Colleague) 대상 과 통신 할 수 있 는 인 터 페 이 스 를 정의 합 니 다.
ConcreteMediator (구체 적 인 중개자)
——중개인 이 각 동료 대상 을 조율 하여 협력 행 위 를 실현 하 는 것 을 이해 하 다.
——그것 의 각 동 료 를 이해 하고 보호 하 다.
ColleagueClass (동료 클래스, 하위 클래스 포함)
——모든 동료 류 는 그것 의 중개자 대상 을 안다.
——모든 동료 대상 은 다른 동료 와 통신 해 야 할 때 중개자 와 통신 한다.
5. 협력
동료 가 중개인 대상 에 게 요청 을 보 내 고 받 았 다.중개인 은 각 동료 간 에 협력 행 위 를 실현 하기 위해 현지 리 트 윗 요청 에 적합 하 다.
6. 효과
1) 하위 클래스 생 성 감소;Mediator 는 여러 대상 간 에 분포 되 어 있 던 행동 을 한데 모 았 다.이러한 행 위 를 바 꾸 려 면 Mediator 의 하위 클래스 만 생 성하 면 됩 니 다.이렇게 하면 각 Colleague 류 가 중 용 될 수 있다.
2) 각 Colleague 를 결합 해제 합 니 다.Mediator 는 각 Colleague 간 의 소나무 결합 에 유리 합 니 다.Colleague 류 와 Mediator 류 를 독립 적 으로 바 꾸 고 재 활용 할 수 있 습 니 다.
3) 그것 은 대상 협 의 를 간소화 했다.Mediator 와 각 Colleague 간 의 한 쌍 이상 의 상호작용 으로 여러 쌍 의 상호작용 을 대체 합 니 다.한 쌍 의 많은 관 계 는 이해 하고 유지 하 며 확장 하기 쉽다.
4) 그것 은 대상 이 어떻게 협력 하 는 지 추상 적 으로 진행 했다.중 개 를 하나의 독립 적 인 개념 으로 하고 이 를 하나의 대상 에 봉 하여 주 의 를 대상 각자 의 행위 에서 그들의 상호작용 으로 옮 기 게 한다.이것 은 시스템 의 대상 이 어떻게 상호작용 을 하 는 지 알 아 내 는 데 도움 이 된다.
5) 그것 은 통 제 를 집중 화 시킨다.중개자 모델 은 상호작용 의 복잡성 을 중개자 의 복잡성 으로 바꾼다.중개인 이 협 의 를 봉 인 했 기 때문에, 그것 은 어떤 Colleague 보다 복잡 해 질 수 있다.이것 은 중개인 자신 을 지 키 기 어 려 운 거대 한 물건 으로 만 들 수 있다.
7. 실현
1) 추상 적 인 Mediator 클래스 무시 하기;각 Colleague 가 하나의 Mediator 와 만 일 할 때 추상 적 인 Mediator 류 를 정의 할 필요 가 없습니다.Mediator 클래스 가 제공 하 는 추상 적 인 결합 은 각 Colleague 로 하여 금 서로 다른 Mediator 하위 클래스 와 함께 일 할 수 있 게 하 였 으 며, 반대로 도 마찬가지 입 니 다.
2) Colleague -- 중재자 통신;관심 있 는 사건 이 발생 했 을 때 Colleague 는 Mediator 와 통신 해 야 합 니 다.하나의 실현 방법 은 Observer 모드 로 Mediator 를 Observer 로 실현 하고 각 Colleague 는 Subset 로 하 며 상태 가 바 뀌 면 Mediator 에 게 알림 을 보 냅 니 다.하나의 방법 은 Mediator 에서 특수 한 알림 인 터 페 이 스 를 정의 하고 각 Colleague 는 통신 할 때 이 인 터 페 이 스 를 직접 호출 하 는 것 이다.
8. 코드 예제
Mediatord
package com.examples.pattern.mediator;
/**
* ,
*/
public interface Mediator {
/**
*
*
* @param colleague
* ,
*/
public void changed(Colleague colleague);
}
ConcreteMediator
package com.examples.pattern.mediator;
/**
*
*/
public class ConcreteMediator implements Mediator {
/**
* A
*/
private ConcreteColleagueA colleagueA;
/**
* B
*/
private ConcreteColleagueB colleagueB;
/**
* A
* @param colleagueA
*/
public void setColleagueA(ConcreteColleagueA colleagueA) {
this.colleagueA = colleagueA;
}
/**
* B
* @param colleagueB
*/
public void setColleagueB(ConcreteColleagueB colleagueB) {
this.colleagueB = colleagueB;
}
@Override
public void changed(Colleague colleague) {
System.out.println(colleague);
}
}
Colleague Class package com.examples.pattern.mediator;
/**
*
*/
public abstract class Colleague {
/**
* ,
*/
private Mediator mediator;
/**
* ,
* @param mediator
*/
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
/**
*
* @return
*/
public Mediator getMediator() {
return mediator;
}
}
package com.examples.pattern.mediator;
/**
* A
*/
public class ConcreteColleagueA extends Colleague {
public ConcreteColleagueA(Mediator mediator) {
super(mediator);
}
public void someOperation(){
// ,
getMediator().changed(this);
}
}
package com.examples.pattern.mediator;
public class ConcreteColleagueB extends Colleague {
public ConcreteColleagueB(Mediator mediator) {
super(mediator);
}
public void someOperation(){
// ,
getMediator().changed(this);
}
}
Client package com.examples.pattern.mediator;
public class Client {
public static void main(String[] args) {
ConcreteMediator mediator = new ConcreteMediator();
ConcreteColleagueA ca = new ConcreteColleagueA(mediator);
ConcreteColleagueB cb = new ConcreteColleagueB(mediator);
mediator.setColleagueA(ca);
mediator.setColleagueB(cb);
ca.someOperation();
cb.someOperation();
}
}
9. 관련 모델
Fa ç ade 와 중개자 의 차이 점 은 대상 서브 시스템 을 추상 화하 여 더욱 편리 한 인 터 페 이 스 를 제공 한 다 는 것 이다.그것 의 협 의 는 일방적인 것 이다. 즉, Fa ç ade 대상 이 이 서브 시스템 클래스 에 대해 요 구 를 하지만 그렇지 않 으 면 안 된다.반면 Mediator 는 각 Colleague 대상 이 지원 하지 않 거나 지원 할 수 없 는 협력 행 위 를 제공 하고 협 의 는 다방면 이다.
Colleague 는 Observer 모드 를 사용 하여 Mediator 와 통신 할 수 있 습 니 다.
10. 광의 중개자
우리 의 일반적인 사용 에서 중개 자 모델 을 간소화 하여 개발 을 간단 하 게 만 들 고 다음 과 같은 변화 가 있다.
4. 567917. 보통 동료 대상 의 부 류 를 없 애 면 임의의 대상 이 서로 상호작용 을 해 야 동료 가 될 수 있다
4. 567917. 보통 Mediator 인 터 페 이 스 를 정의 하지 않 고 구체 적 인 중개 자 대상 을 하나의 사례 로 실현 한다
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.