关于中介模式我所知道的

简介: 关于中介模式我所知道的

image.png


设计模式 行为型

中介模式的主要目的是减少对象之间的直接交互,而是通过中介者对象来协调它们之间的交互。

目的作用


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

作用和中间层很像,通过增加中介这个中间层将对象之间多对多的关系改造成一对多的关系。解除对象之间的强依赖紧耦合的关系。

对象之间不再直接进行交互,而是通过中介对象中转一下。最小化对象之间的交互关系,降低乐代码的复杂度,提高了代码的可读性和可维护性。


image.png

改造后


image.png


现实比喻


类似航空管制。

塔台可以被视为中介对象,而飞机可以被视为需要协调交互的对象。飞机起飞或降落时,塔台需要协调多个飞机之间的交通,确保它们之间不会发生碰撞或其他事故。

塔台会通过收集和处理每个飞机的相关信息,例如它们的位置、速度和方向等,来决定哪个飞机应该起飞或降落,以及它们应该采取什么行动。

在这个过程中,飞机不直接相互通信,而是通过塔台来进行协调。塔台拥有对所有飞机的引用,并负责协调它们之间的交互,从而保证了航空领域的安全和顺畅。

回归到日常业务中,用不用中介模式的区别就在于 原本业务逻辑会分散在各个控件中,现在都集中到了中介对象中。虽然简化了控件之间的交互,但是可能会使中介对象变成庞大复杂的“上帝类”。所以,在使用中介模式的时候,我们要根据实际的情况,平衡对象之间交互的复杂度和中介类本身的复杂度。


代码实现

案例 1


image.png


改造后


image.png


案例 2


image.png


改造后


image.png


适用场景


适用于需要协调和控制多个对象之间的复杂交互的场景。


通过将交互逻辑封装在中介者对象中,可以更好地控制对象之间的耦合度,从而提高系统的可维护性和可扩展性。

场景关键词举例:

  • 简化对象之间的耦合关系
  • 当一个对象需要协调多个其他对象之间的交互时
  • 当一个对象需要向多个对象发送通知或消息时
  • 当一个对象需要与多个对象进行交互,并且这些对象的数量和类型不固定时
  • 当一个对象需要与其他对象进行交互,并且这些对象都需要知道该对象的状态或行为时

与其他设计模式的区别

中介模式与观察者模式的区别

中介模式和观察者模式都是用来协调多个对象之间的交互,但实现方式不同。 中介模式中,所有对象都是和中介者对象交互,而中介者对象负责将信息传递给其他对象; 而观察者模式中,被观察对象与观察者对象之间是直接交互的,被观察对象负责将信息通知给观察者对象。

在观察者模式的应用场景中,参与者之间的交互关系比较有条理,而中介模式正好相反。 只有当参与者之间的交互关系错综复杂,维护成本很高的时候,我们才考虑使用中介模式。 除此之外,如果一个参与者状态的改变,其他参与者执行的操作有一定先后顺序的要求。这个时候中介模式就可以利用中介类,通过先后调用不同参与者的方法,来实现顺序的控制,而观察者模式是无法实现这样的顺序要求的。


中介模式与适配器模式的区别


中介模式和适配器模式都是用来解决对象之间的兼容性问题,但它们的解决方式不同。中介模式中,中介者对象负责将不同对象之间的接口进行转换,使它们能够相互协作;而适配器模式中,适配器对象负责将一个对象的接口转换成另一个对象所期望的接口。


中介模式与装饰器模式的区别


中介模式和装饰器模式都是用来扩展对象的功能,但它们的扩展方式不同。中介模式中,中介者对象通过协调对象之间的交互来扩展对象的功能;而装饰器模式中,装饰器对象通过包装其他对象来扩展对象的功能。


中介模式与代理模式的区别


中介模式和代理模式都是用来控制对象之间的访问,但它们的控制方式不同。中介模式中,中介者对象负责控制对象之间的交互,从而控制对象的访问;而代理模式中,代理对象负责控制对实际对象的访问,从而控制对象的访问。

目录
相关文章
|
4月前
|
设计模式 前端开发
前端设计模式之【中介模式】
前端设计模式之【中介模式】
36 1
|
11月前
|
设计模式 前端开发
设计模式~调停者(中介)模式-06
调停者(中介)模式 优点 缺点 使用场景 用一个中介对
47 0
|
5天前
|
安全 Linux 测试技术
VFIO中介设备 【ChatGPT】
VFIO中介设备 【ChatGPT】
|
17天前
|
项目管理
类与类之间的协作模式问题之中介者模式在项目管理中有什么作用
类与类之间的协作模式问题之中介者模式在项目管理中有什么作用
|
17天前
类与类之间的协作模式问题之桥接模式在软件开发中应用的问题如何解决
类与类之间的协作模式问题之桥接模式在软件开发中应用的问题如何解决
|
4月前
|
安全
跨境购物用代理IP的好处是什么?
代理IP在跨境购物中发挥关键作用,帮助突破海外网站访问限制,避免价格歧视,同时保护用户隐私。通过伪装IP地址,用户能绕过对中国IP的限制,获取更优惠价格并保障个人信息安全,提升购物体验。对于频繁跨境购物者,使用代理IP是值得考虑的选择。
|
4月前
|
设计模式
【设计模式】中介模式
【设计模式】中介模式
|
11月前
|
设计模式 移动开发 Java
浅谈交易链路中的一些设计原则&模式
作者对设计原则、模式等学习后,通过本文谈谈自己的感受。
159865 28