前言

将一个系统分割为多个对象可以增强复用性,但是对象之间相互连接又会降低复用性。如果使用一个中介对象来改变这总交互关系将增强系统健壮性。

1 定义

Mediator中介者模式:用一个中介对象封装一系列对象的交互过程。中介使各对象不需要显示引用,从而降低了耦合,可以独立的改变它们的交互。

2 适用性

  • 一组对象定义良好但是需要复杂的方式进行通信,产生的依赖关系导致结构混乱。
  • 一个对象引用其它很多对象,并且直接通信,导致难以复用该对象。
  • 想定制一个分布在多个类中的行为,而不想依赖太多子类。

3 结构

3.1 结构图

中介者结构如下:
在这里插入图片描述

3.2 参与者

  • Mediator:定义一个接口,用于其它Colleague进行通信。
  • Colleague:同事接口,与其它同事通信时依靠Mediator进行通信。
  • ConcreteMediator:具体中介者,了解并维护各个Colleague,协调它们的通信行为。

4 应用举例——以房产中介为例

4.1 Mediator——HouseMediator

定义如下:
在这里插入图片描述
定义一个转发消息方法。

4.2 具体Mediator——BeijingHouseMediato

定义如下:
在这里插入图片描述
定义具体转发消息方法,并维护通信的双方。

4.3 Colleague

定义如下:
在这里插入图片描述
定义发送和接受消息。

4.4 具体Colleague——ConcreteColleagueOne、ConcreteColleagueTwo

定义类似,以ConcreteColleagueTwo为例:
在这里插入图片描述
需要维护一个中介指针,发送消息需要依赖中介进行,接受消息同样依赖中介。

5 总结

该模式通常用于多向的对象协作行为,与Facade模式不同,Facade是对子系统的抽象,协议是单向的,子系统不知道Facade的存在。

参考文献

[1]. 《设计模式》

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐