(19) 중개자 모델 - 코드 실현
소개하다.
개념: 하나의 중개 대상으로 일련의 대상 상호작용을 봉인한다.중개자는 각 대상을 현식적으로 서로 인용할 필요가 없게 하여 결합을 느슨하게 하고 그들 간의 상호작용을 독립적으로 변화시킬 수 있다.
응용 장면: 서로 다른 기능의 모듈 간 호출 관계가 복잡하고 결합도가 높아 수정할 때 사용하기에 불리하다.
장점: 결합을 낮추고 모듈이 독립적이다.
나쁜 점: 중개인의 업무가 복잡하고 유지하기가 쉽지 않다.
코드:
//정의 모듈 추상 클래스
package note.com.mediator;
public abstract class Element {
public Mediator mediator = null;
public abstract void good();
public abstract void bad();
public Mediator getMediator() {
return mediator;
}
public void setMediator(Mediator mediator) {
this.mediator = mediator;
}
public abstract void changeGood();
public abstract void changeBad();
}
//모듈 구체화
package note.com.mediator;
/**
* -
* @author lxz
*
*/
public class Army extends Element{
@Override
public void good() {
System.out.println(" ");
}
@Override
public void bad() {
System.out.println(" ");
}
@Override
public void changeGood() {
getMediator().change(Mediator.ARMY, Mediator.GOOD);
}
@Override
public void changeBad() {
getMediator().change(Mediator.ARMY, Mediator.BAD);
}
}
package note.com.mediator;
/**
* -
* @author lxz
*
*/
public class Goverment extends Element{
@Override
public void good() {
System.out.println(" ");
}
@Override
public void bad() {
System.out.println(" ");
}
@Override
public void changeGood() {
good();
getMediator().change(Mediator.GOVERMENT, Mediator.GOOD);
}
@Override
public void changeBad() {
bad();
getMediator().change(Mediator.GOVERMENT, Mediator.BAD);
}
}
package note.com.mediator;
/**
* -
* @author lxz
*
*/
public class People extends Element{
@Override
public void good() {
System.out.println(" ");
}
@Override
public void bad() {
System.out.println(" ");
}
@Override
public void changeGood() {
good();
getMediator().change(Mediator.PEOPLE, Mediator.GOOD);
}
@Override
public void changeBad() {
bad();
getMediator().change(Mediator.PEOPLE, Mediator.BAD);
}
}
//중개자, 모듈 간의 호출 정의
package note.com.mediator;
/**
*
* @author lxz
*
*/
public class Mediator{
public static final String ARMY = "Army";
public static final String GOVERMENT = "Goverment";
public static final String PEOPLE = "People";
public static final String GOOD = "good";
public static final String BAD = "bad";
public Element a = null;
public Element g = null;
public Element p = null;
public Mediator(Army a,Goverment g,People p){
this.a = a;
this.g = g;
this.p = p;
}
public void change(String label,String state){
if(ARMY.equals(label)){
if(GOOD.equals(state)){
g.good();
p.good();
}else if(BAD.equals(state)){
g.bad();
p.bad();
}
}else if(GOVERMENT.equals(label)){
if(GOOD.equals(state)){
a.good();
p.good();
}else if(BAD.equals(state)){
a.bad();
p.bad();
}
}else if(PEOPLE.equals(label)){
if(GOOD.equals(state)){
a.good();
g.good();
}else if(BAD.equals(state)){
a.bad();
g.bad();
}
}
}
public Element getA() {
return a;
}
public void setA(Element a) {
this.a = a;
}
public Element getG() {
return g;
}
public void setG(Element g) {
this.g = g;
}
public Element getP() {
return p;
}
public void setP(Element p) {
this.p = p;
}
}
//테스트 클래스
package note.com.mediator;
public class MediatorTest {
public static void main(String[] args) {
// , ,
Army a = new Army();
Goverment g = new Goverment();
People p = new People();
//
Mediator mediator = new Mediator(a,g,p);
a.setMediator(mediator);
g.setMediator(mediator);
p.setMediator(mediator);
a.changeBad();//
System.out.println("====");
g.changeBad();//
System.out.println("====");
p.changeGood();//
}
}
//결과
정부 가 돈 이 없으면 인민 이 행복하지 않다 = = 정부 가 돈 이 없으면 부대 약소 인민 이 행복하지 않다 = = = = 인민 행복 부대 강대하다 정부 가 돈 이 있다
이를 통해 알 수 있듯이 세 모듈 간의 호출 관계는 Mediator가 제어하여 세 모듈이 자신의 기능에 더욱 전념하도록 한다.
주의: 사순환으로 설계되지 않도록 조심하세요.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.