设计模式:中介模式

中介模式听名字作为中介,在复杂的调用关系中做个中介传递(类似于在状态机中弄一个中心点,所有的关系状态转移交给中介来处理),同样也是一个重在实用意义,实现结构倒是不要求什么,实际上结构跟观察者比较像。

Mediator Design Pattern 中介模式GoF定义

Mediator pattern defines a separate (mediator) object that
encapsulates the interaction between a set of objects and the objects
delegate their interaction to a mediator object instead of interacting
with each other directly.

中介模式定义了一个单独的(中介)对象,来封装一组对象之间的交互。将这组对象之间的交互委派给与中介对象交互,来避免对象之间的直接交互。

使用场景就是很多对象之间交互关系很复杂,通过中介来梳理关系,如下个图,前者是没有中介模式,后者是中介模式改造后的状态变化:
在这里插入图片描述
实际生活中的例子,有航空管制的控制台,处理飞机的起飞降落这些。一个复杂的UI控件,里面一堆功能,你点击不同的控件功能不同返回不同(登录,注册,推出等)。

中介模式VS观察者模式

Observer定义了一对多(one-to-many)的依赖关系, Mediator封装了多个对象互相之间的交互方式. Oberver定义了单向的订阅关系, Mediator通过引入中间件的方式解决多个对象之间混乱的依赖关系与通信方式.

中介模式注重于协调,而不是通讯。既然要协调,那么中介模式就得依赖于各个参与者,知道他们的功能。而观察者不需要知道被观察者的功能,只负责把消息送到就行。

观察者不注重业务,类似eventbus一样不会涉及到业务,但是中介模式重在业务去转发。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值