中介(联合国)模式
-
有好多同级别的工作类,如何统筹他们的调用or通信,降低类之间的耦合。网状交互->星状交互
-
view的事件机制:计算机有多个按钮,会有一个统一管理的类,将控件的结果处理后展示在展示框上。
-
与门面Facade模式的区别:中介与各工作类之间时双向通信的,Facade只是单向调用工作类整合后对外提供接口。
public abstract class Handler { protected Mediator mediator; public Handler(Mediator mediator) { this.mediator = mediator; } public abstract void handle(String duty); }
public abstract class Mediator { public abstract void handleDuty(String duty,Handler handler) ; }
public class Mediator1 extends Mediator { private Handler1 handler1; private Handler2 handler2; public Mediator1() { } public Mediator1(Handler1 handler1, Handler2 handler2) { this.handler1 = handler1; this.handler2 = handler2; } public Handler1 getHandler1() { return handler1; } public void setHandler1(Handler1 handler1) { this.handler1 = handler1; } public Handler2 getHandler2() { return handler2; } public void setHandler2(Handler2 handler2) { this.handler2 = handler2; }
public class Handler1 extends Handler { public Handler1(Mediator mediator) { super(mediator); } @Override public void handle(String duty) { mediator.handleDuty(duty,this); } public void actuallyGet(String duty) { System.out.println("Handler1 actually get " + duty); } } public class Handler2 extends Handler { public Handler2(Mediator mediator) { super(mediator); } @Override public void handle(String duty) { mediator.handleDuty(duty, this); } public void actuallyGet(String duty) { System.out.println("Handler2 handle get " + duty); } }
public abstract class Handler { protected Mediator mediator; public Handler(Mediator mediator) { this.mediator = mediator; } public abstract void handle(String duty); }
public abstract class Mediator {
public abstract void handleDuty(String duty,Handler handler) ;
}
public class Mediator1 extends Mediator {
private Handler1 handler1;
private Handler2 handler2;
public Mediator1() {
}
public Mediator1(Handler1 handler1, Handler2 handler2) {
this.handler1 = handler1;
this.handler2 = handler2;
}
public Handler1 getHandler1() {
return handler1;
}
public void setHandler1(Handler1 handler1) {
this.handler1 = handler1;
}
public Handler2 getHandler2() {
return handler2;
}
public void setHandler2(Handler2 handler2) {
this.handler2 = handler2;
}
public class Handler1 extends Handler {
public Handler1(Mediator mediator) {
super(mediator);
}
@Override
public void handle(String duty) {
mediator.handleDuty(duty,this);
}
public void actuallyGet(String duty) {
System.out.println("Handler1 actually get " + duty);
}
}
public class Handler2 extends Handler {
public Handler2(Mediator mediator) {
super(mediator);
}
@Override
public void handle(String duty) {
mediator.handleDuty(duty, this);
}
public void actuallyGet(String duty) {
System.out.println("Handler2 handle get " + duty);
}
}
网友评论