设计模式——Mediator(中介者)模式

目录

  • 前言
  • 1 定义
  • 2 适用性
  • 3 结构
    • 3.1 结构图
    • 3.2 参与者
  • 4 应用举例——以房产中介为例
    • 4.1 Mediator——HouseMediator
    • 4.2 具体Mediator——BeijingHouseMediato
    • 4.3 Colleague
    • 4.4 具体Colleague——ConcreteColleagueOne、ConcreteColleagueTwo
  • 5 总结
  • 参考文献

前言

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

1 定义

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

2 适用性

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

3 结构

3.1 结构图

中介者结构如下:
设计模式——Mediator(中介者)模式_第1张图片

3.2 参与者

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

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

4.1 Mediator——HouseMediator

定义如下:
设计模式——Mediator(中介者)模式_第2张图片
定义一个转发消息方法。

4.2 具体Mediator——BeijingHouseMediato

定义如下:
设计模式——Mediator(中介者)模式_第3张图片
定义具体转发消息方法,并维护通信的双方。

4.3 Colleague

定义如下:
设计模式——Mediator(中介者)模式_第4张图片
定义发送和接受消息。

4.4 具体Colleague——ConcreteColleagueOne、ConcreteColleagueTwo

定义类似,以ConcreteColleagueTwo为例:
设计模式——Mediator(中介者)模式_第5张图片
需要维护一个中介指针,发送消息需要依赖中介进行,接受消息同样依赖中介。

5 总结

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

参考文献

[1]. 《设计模式》

你可能感兴趣的:(设计模式,java,后端,设计模式,中介者模式)