设计模式(17)------中介者模式
来源:互联网 发布:男子遭遇网络诈骗 编辑:程序博客网 时间:2024/05/16 08:25
中介者模式作用:
用一个中介对象来封装一系列的对象交互。
中介者使各对象不需要显式的相互引用,从而使其耦合松散,同时,可以独立地改变他们之间的交互。
应用场景:
(1)一组对象以定义良好但是复杂的方式进行通讯,产生的交互对象结构混乱,难以理解。
(2)一个对象引用其他很多对象,并且直接与这些对象通讯,导致对象难以复制。
(3)想要定制一个分部在多个方法中的行为,但是又不想产生太多的子类。
参与对象:
(1)Mediator
中介者定义一个接口用于与各个同事(Colleaguesclass)之间进行通讯。
(2)ConcreteMediator
具体中介者通过协调各同事对象实现协作行为,了解并维护同事对象。
(3)Colleaguesclass
每一个同事类都知道它的中介者对象。
每一个同事对象在需要与它的同事通讯的时候都与它的中介者通讯 。
比如,中介者就好比一个间谍组织,每一个间谍都知道自己隶属于哪个间谍组织(中介者),
如果间谍之间想要通讯联系,需要跟间谍组织(中介者)通讯,由组织安排间谍之间的通讯,
由组织安排他们的刺杀和爆破等任务。
eg:
Mediator
package com.lanhuigu.base.design.behavior.mediator;/** * Mediator: 中介者定义一个接口用于与各个同事(Colleaguesclass)之间进行通讯 */public abstract class Mediator {abstract void notice(String context);}
ConcreteMediator
package com.lanhuigu.base.design.behavior.mediator;/** * ConcreteMediator: 具体中介者通过协调各同事对象实现协作行为,了解并维护同事对象 */public class ConcreteMediator extends Mediator {private ColleagueA ca;private ColleagueB cb;public ConcreteMediator() {// TODO Auto-generated constructor stubca = new ColleagueA();cb = new ColleagueB();}@Overridevoid notice(String context) {// TODO Auto-generated method stubif ("A特工".equals(context)) {ca.action();}if ("B特工".equals(context)) {cb.action();}}}
Colleaguesclass
package com.lanhuigu.base.design.behavior.mediator;public abstract class Colleague {abstract void action();}
package com.lanhuigu.base.design.behavior.mediator;public class ColleagueA extends Colleague{public void action() {System.out.println("A特工,请示工作");}}
package com.lanhuigu.base.design.behavior.mediator;public class ColleagueB extends Colleague{public void action() {System.out.println("B特工,请示组织");}}Test
package com.lanhuigu.base.design.behavior.mediator;public class Test {public static void main(String[] args) {Mediator md = new ConcreteMediator();// A特工请示md.notice("A特工");// B特工请示md.notice("B特工");}}
运行结果:
0 0
- 设计模式(17)------中介者模式
- 设计模式(17)-中介者模式
- 设计模式(17)--中介者模式
- 设计模式(17)--中介者模式
- 设计模式 17 - Mediator中介者模式
- 设计模式(17)---->中介者模式
- 设计模式(17) - Mediator中介者模式
- 设计模式(17)之中介者模式
- 设计模式--中介者模式(Mediator)
- 设计模式(7):中介者模式
- c++设计模式(中介者模式)
- 设计模式(24) - 中介者模式
- 设计模式(8):中介者模式
- 设计模式:中介者模式(Mediator)
- 设计模式:中介者模式(Mediator)
- 设计模式:中介者模式(Mediator)
- 设计模式(20)-中介者模式
- 设计模式(十四)中介者模式
- WPF DevExpress 更换主题
- 设计模式(15)------解释器模式
- TI zigbee UART的两种模式
- Mac 下使用ISIS 处理数据 -CTX,HiRISE,LRO
- 设计模式(16)------迭代器模式
- 设计模式(17)------中介者模式
- 这只是一个测试博客Visual Studio Ultimate 2013,vs2013.5_ult_chs.iso,vs2013.5_ult_enu.iso
- Hi3516A开发--ethtool安装和使用
- 设计模式(18)------备忘录模式
- 设计模式(19)------观察者模式
- Robot Framework自动化测试--安装篇
- hdu 5551/Huatuo's Medicine
- CVPR2016目标检测新进展
- Python实现最小二乘法