中介者模式

摘要:
Mediator中介者模式:中介模式封装一系列的对象交互,集中管理相关对象之间复杂的沟通和交互。Mediator在各Colleague之间适当的转发请求以实现协作行为。

Mediator

中介者模式:中介模式封装一系列的对象交互,集中管理相关对象之间复杂的沟通和交互。中介者使各对象不需要明显的相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。简单点来说,将原来两个直接引用或者依赖的对象拆开,在中间加入一个“中介”对象,使得两头的对象分别和“中介”对象引用或者依赖。

clip_image002

实现:

clip_image004

Mediator:定义一个接口用于和各Colleague通信,其中主要的方法是一个或多个事件方法。

Concrete Mediator:

1. 继承Mediator,实现事件方法。

2. Concrete Mediator知晓所有的具体Colleague,它从具体Colleague对象接收消息,向具体Colleague发出命令。

Colleague:

1. 每一个Colleague都知道它的Mediator,而不知道其他Colleague。

2. 每一个Colleague与其他Colleague通信时,与它的Mediator通信。

要点:

1. Colleague向一个Mediator对象发送和接收请求。Mediator在各Colleague之间适当的转发请求以实现协作行为。

2. Mediator常常用于协调相关的GUI组件。

3. Colleague可以使用观察者模式与Mediator通信,Mediator收到通知后将状态改变的结果传播给其他的Colleague。

4. 也可以在Mediator中定义一个特殊的通知接口,各Colleague在通信时直接调用该接口。当与Mediator通信时, Colleague可以将自身作为一个参数传递给Mediator,使其可以识别发送者。

5. Façade为一个子系统提供一个简单的接口,其中消息的传送是单向的。Mediator则不同,它与Colleague对象的相互作用是多向的。

适用性:

1. GUI组件间的相互协调合作。

2. Mediator使用的情形很少,使用时首先应谨慎判断是否自己在滥用模式。

优点:

1. 避免Colleague对象之间的过度耦合,增加各Colleague和Mediator的复用性。

2. Mediator将控制逻辑集中,简化了系统的维护(一对多代替多对多的交互)。

缺点:

如果设计不当,Mediator对象会相当复杂。

免责声明:文章转载自《中介者模式》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇几种任务调度的 Java 实现方法与比较Timer,ScheduledExecutor,Quartz,JCronTabopenssl多线程实例下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Linux下同一网段内的IP中两台主机通信不经过路由器(ARP)(转)

答案一:同一网段A与B通信,不需要路由器介入。 A直接广播ARP request 到广播域,B处于同一广播域,可以接收到ARP request,B用单播方式直接告诉A自己的MAC B 地址。A收到B的ARP reply,将 MAC B ----10.1.1.3 缓存在ARP Table,既然知道B的二层、三层地址,可以完成 Ethernet Frame 的...

移动通信最先进的音频编解码器EVS及用好要做的工作

语音通信从最初的只有有线通信变成后来的有线通信与无线通信(移动通信)的竞争,当移动语音通信价格下来后有线语音通信明显处于逆势。如今移动语音通信的竞争对手是OTT(On The Top)语音,OTT语音是互联网厂商提供的服务,一般免费,如微信语音。目前语音通信技术上就分成了两大阵营:传统通信阵营和互联网阵营,互相竞争,推动着语音通信技术的发展。具体到编解码器...

基于P2P的匿名技术研究

李超 北京图形研究所 摘要:本文针对匿名通信中两种基本技术:Mix和洋葱路由进行了论述,并分析了P2P网络对于Mix网络和传统的洋葱路由的改进和缺陷,论述了基于P2P的匿名通信在提高通信性能和抗攻击能力上的实现技术。 关键词:P2P 洋葱路由 网络 匿名 1、概述  传统意义下的网络安全包括以下四个要素:秘密性(Confidentiality)、完整性(I...

操作系统-进程(5)进程通信机制

交互式并发进程通过信号量及PV操作可以实现进程的互斥与同步,例如生产者-消费者就是一组相互协作的进程,它们通过信号量来协同工作,并引入有界缓冲区来存取。这种低级通信方式不方便而且局限性很大。 管程适用于高级程序设计编程,它把分散在各进程中的临界区集中统一管理,采用阻塞/唤醒+集中临界区和一次状态测试策略,提供了同步工具的一种新选择。 上述工具可以解决同步和...

Spark启动流程(Standalone)-分析

1、start-all.sh脚本,实际上执行java -cp Master 和 java -cp Worker 2、Master 启动时首先穿件一个RpcEnv对象,负责管理所有通信逻辑 3、Master 通信RpcEnv对象创建一个Endpoint,Master就是一个Endpoint,Worker可以与其进行通信 4、Worker启动时也是创建一个R...

Linux基础(08)信号通信机制

1.Linux中的信号(有32个)   信号会中断一些函数的阻塞 https://zhidao.baidu.com/question/1766690354480323100.html #define SIGHUP 1 #define SIGINT 2 #define SIGQUIT 3 #define SI...