JAVA-设计模式之中介者模式
2013-08-12 18:04
357 查看
package caosc.javaModel.Mediator; public abstract class Colleague { protected Mediator mediator; public Colleague(Mediator mediator) { this.mediator = mediator; } public abstract void send(String message); }
package caosc.javaModel.Mediator; public abstract class Mediator { public abstract void sendMessage(Colleague colleague,String message); }
package caosc.javaModel.Mediator; public class ConcreteMediator extends Mediator { ConcreteColleague1 cc1; ConcreteColleague2 cc2; public ConcreteColleague1 getCc1() { return cc1; } public void setCc1(ConcreteColleague1 cc1) { this.cc1 = cc1; } public ConcreteColleague2 getCc2() { return cc2; } public void setCc2(ConcreteColleague2 cc2) { this.cc2 = cc2; } @Override public void sendMessage(Colleague colleague, String message) { if(colleague==cc1){ cc1.nodifyMessage(message); }else{ cc2.nodifyMessage(message); } } }
package caosc.javaModel.Mediator; public class ConcreteColleague1 extends Colleague { public ConcreteColleague1(Mediator mediator) { super(mediator); } public void nodifyMessage(String message){ System.out.println(message); } @Override public void send(String message) { mediator.sendMessage(this, message); }; }
package caosc.javaModel.Mediator; public class ConcreteColleague2 extends Colleague { public ConcreteColleague2(Mediator mediator) { super(mediator); } public void nodifyMessage(String message){ System.out.println(message); } @Override public void send(String message) { mediator.sendMessage(this, message); }; }
package caosc.javaModel.Mediator; public class MediatorTest { public static void main(String[] args) { ConcreteMediator m = new ConcreteMediator(); ConcreteColleague1 cc1 = new ConcreteColleague1(m); ConcreteColleague2 cc2 = new ConcreteColleague2(m); m.cc1 = cc1; m.cc2 = cc2; cc1.send("今年加工资了吗?"); cc2.send("没有呢!"); } }
使用场合:
1、由于把对象如何协作进行抽象,将中介作为一个独立的概念并将其封装到一个对象中,这样关注的对象就是对象各自本身的行为转到他们中间的交互上来,站在一个宏观的角度去看待系统
2、Mediator的出现,减少了各个Colleague的耦合,可以独立的改变和复用各个Colleague,Mediator
3、缺点是由于ConcreteMediator的集中处理,于是把交换复杂性变成交互者复杂性,所以ConcreteMediator比任何一个ConcreteColleagueX都复杂;
相关文章推荐
- Java设计模式--中介者模式
- java设计模式--迭代器模式 Iterator,备忘录模式 Memento,中介者模式 Mediator
- Java设计模式—中介者模式
- 设计模式之第19章-中介者模式(Java实现)
- Java设计模式-7-中介者模式
- Java设计模式-中介者模式(Mediator)
- Java设计模式——Mediator(中介者)模式
- 设计模式学习笔记--中介者模式Mediator pattern(Java版)
- JAVA开发的23种设计模式之 --- 中介者模式
- Java设计模式之从[游戏中开启宝箱]分析中介者(Mediator)模式
- Java设计模式之中介者模式
- 设计模式(java) ------ 中介者模式
- Java设计模式之中介者模式
- java设计模式--行为型模式--中介者模式
- Java设计模式之中介者模式
- 三、Java设计模式——中介者模式
- 8.java设计模式(读书笔记)中介者模式
- Java设计模式之中介者模式
- java设计模式之中介者模式
- java设计模式(行为型)之中介者模式