设计模式初探-中介者模式

1.中介者模式定义

用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。

56c987e36c6546d4b5ac4128d23a597b.png

 

想要持续地追踪每个对象的每个规则,以及对象之间彼此错综复杂的关系,是非常不易的,但是在整个系统中加入一个中介者,一切就会变得简单,首先每个对象都会在自己的状态改变时,告诉中介者。其次每个对象都会对中介者发出的请求做出回应。

而且通过中介者,可以将系统的网状结构变成以中介者为中心的星形结构,每个具体对象都是通过中介者与另一个对象发生相互作用,“中介者”的设计,使得系统的结构不会因为新对象的引入造成大量的修改工作。

 

而在没有中介者的情况下,所有的对象都需要认识其他对象,对象之间是需要紧耦合的,有了中介者之后,对象之间彻底解耦。

中介者包含了整个系统的控制逻辑,当某个装置需要一个新的规则时,或者是一个新的装置被加入系统内,其所需要用到的逻辑也都被加进了中介者内。

 

2.设计要点

中介模式主要有以下三个角色,在设计中介模式时要找到并区分这些角色:

(1)交互对象(InteractiveObject):要进行交互的一系列对象。

(2)中介者(Mediator):负责协调各个对象之间的交互。

(3)具体中介者(Mediator):中介的具体实现。

    3.中介者模式的优缺点

优点

(1)通过将对象彼此解耦,可以增加对象的复用性。

(2)通过将控制逻辑集中,可以简化系统维护

(3)可以让对象之间所传递的消息变得简单而且大幅减少

缺点

(1)中介者常常被用来协调相关的GUI组件

(2)如果设计不当,中介模式对象本身会变得过于复杂。

 4.实战应用

无论是QQ、钉钉这类支持视频通信的社交软件,还是51Talk这类互联网在线教育产品,都需要和通信设备(扬声器、麦克风、摄像头)进行交互。在PC端(尤其是Windows系统下),你可能会有多个扬声器、多个麦克风,甚至多个摄像头,还可能会在通话的过程中由麦克风A切换到麦克风B。

如何与这些繁杂的设备进行交互呢,这就用到了中介模式

建立一个中介者,客户端界面通过这个中介者与设备进行交互,这样界面类就不用同时维护三个设备对象,而只要与一个中介者对象进行交互就可以了。ClientWidget可通过DeviceUtil枚举各种类型的设备(扬声器、麦克风、摄像头),同时可以通过DeviceUtil读取和保存当前正在使用的各种类型设备。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值