中介者模式

中介模式:

  1. 公开一个统一的接口,限制系统的不同部分可以通过该接口进行通信

  2. 系统不同部分不再显示的引用彼此

  3. 属于行为设计模式。

生活中例子:

  • 机场交通控制系统:机场控制塔(中介者)处理飞机的起飞和降落,因为所有通信(监听到或发出的通知)都是从飞机到控制塔,而不是飞机和飞机直接相互通信。

优点:

  • 能够将系统中对象或组件之间所需的通信渠道从多对多减少到多对一

缺点:

  1. 会导致性能下降,因为它们总是间接地进行通信;

  2. 会引入单一故障点

区别

  • 和中介者模式比较相似的有观察者模式外观模式,如下:

--- 中介者模式与观察者模式

  • 中介者模式严格限制对象间只能通过中介者模块进行通信对象之间不可通信);

  • 观察者模式中的通信方式是由观察者和发布者互连的方式决定,观察者之间可以相互通信一个观察者可能是另一个观察者的发布者)。

--- 中介者模式与外观模式

  • 中介者模块在它被模块显式引用的地方汇集这些模块之间的通信,是多向的

  • 外观模式仅仅是为模块或者系统定义一个简单的接口,没有任何额外的功能,系统中的其他模块不会直接关联外观,是单向的

代码例子:

  • 定义玩家和记分牌,玩家和记分牌之间不直接通信

    中介者模式_第1张图片

  • 中介的业务:

    中介者模式_第2张图片

  • 执行:

  • 上面例子的流程是这样的:按键告诉中介可以让玩家开始玩了,玩家收到通知后开始玩耍,然后告诉中介可以让分数牌可以更新分数了。

  • 更多例子待补充~~~~~~

一句话总结:

  • 租房子前,我们和中介联系,房东和中介联系,我们和房东之间无法联系。





你可能感兴趣的:(JavaScript,设计模式)