조정자 모드
4053 단어 작업
조정자 모델은 일련의 대상의 상호작용 방식을 포장하여 이러한 대상들이 서로 뚜렷하게 인용할 필요가 없게 한다.그리하여 그들은 비교적 느슨하게 결합할 수 있다.이들 대상 중 일부 대상 간의 상호작용이 변화할 때 다른 일부 대상 간의 상호작용에 즉각 영향을 주지 않는다.따라서 이러한 상호작용이 서로 독립적으로 변화할 수 있음을 보장한다.
조정자 모델에서 모든 구성원 대상은 업무를 조율할 수 있지만 직접적으로 서로 관리하지 않는다.이들 대상은 모두 중심에 있는 조정자 대상과 밀접한 관계를 맺고 이 조정자 대상이 조율 작업을 한다.이 조정자는 조정자(Mediator)이고, 조정자가 조정한 구성원 대상은 동료(Colleague) 대상이다.
Colleague 대상 내부에서 발생하는 사건은 모든 동료에게 영향을 미치지만 이런 영향은 다른 대상에게 직접적으로 전달되지 않고 조정자 대상에게만 영향을 주고 조정자 대상은 반대로 다른 동료를 조율하여 전체 시스템의 행위를 형성한다.
/**
*
*/
public abstract class Colleague {
private Mediator mediator;
/**
*
*/
public Colleague(Mediator mediator) {
this.mediator = mediator;
}
/**
*
*/
public Mediator getMediator(){
return mediator;
}
/**
* , ,
*/
public abstract void action();
/**
*
*/
public void change(){
mediator.colleagueChanged(this);
}
}
/**
* 1
*/
public class Colleague1 extends Colleague {
/**
*
*/
public Colleague1(Mediator mediator) {
super(mediator);
}
/**
*
*/
@Override
public void action() {
System.out.println("This is an action from Colleague 1");
}
}
/**
* 2
*/
public class Colleague2 extends Colleague {
/**
*
*/
public Colleague2(Mediator mediator) {
super(mediator);
}
/**
*
*/
@Override
public void action() {
System.out.println("This is an action from Colleague 2");
}
}
/**
*
*/
public abstract class Mediator {
/**
* ,
* ,
*
*/
public abstract void colleagueChanged(Colleague colleague);
}
/**
*
*
*/
public class ConcreteMediator extends Mediator {
private Colleague1 colleague1;
private Colleague2 colleague2;
/**
*
*/
@Override
public void colleagueChanged(Colleague colleague) {
colleague1.action();
colleague2.action();
}
/**
* ,
*
*/
public void createConcreteMediator(){
colleague1 = new Colleague1(this);
colleague2 = new Colleague2(this);
}
/**
* ,
*/
public Colleague1 getColleague1(){
return colleague1;
}
/**
* ,
*/
public Colleague2 getColleague2(){
return colleague2;
}
}
조정자 호출 시퀀스:
Colleague1 대상에 변화가 생겼을 때 그는 Mediator 대상의 시간 방법인colleagueChanged(this)를 호출하고 자신을 매개 변수로 Mediator 대상에게 전달한다. 구체적인 조정자 대상인ConcreteMediator는Colleague1, Colleague2의 action() 행동 방법을 호출한다.
public class Client {
public static void main(String[] args) {
//
ConcreteMediator concreteMediator = new ConcreteMediator();
//
concreteMediator.createConcreteMediator();
// 1
Colleague colleague1 = concreteMediator.getColleague1();
// 1
colleague1.change();
}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
개인 FLEX 지식 라이브러리 작업 노트[size=large]1、 이 방법은 TileWindows 팝업 창에 있습니다. TitleWindows의 maxWidth와 maxHeight를 지정하지 않으면 최대 값이 화면 전체에 깔립니다. 페이지의minHeigh...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.