Lazy loaded image
中介者设计模式:让对象之间的交流更简单hdefault
Words 1494Read Time 4 min
2026-1-22

中介者设计模式:让对象之间的交流更简单

设计模式概述

中介者设计模式(Mediator Pattern)是一种行为设计模式,它通过引入一个中介对象来封装一系列对象之间的交互。中介者使得对象之间不需要显式地相互引用,从而降低它们之间的耦合度,并且可以独立地改变它们之间的交互。
用一个简单的比喻来说,中介者就像是机场的塔台,负责协调各个飞机之间的起降和飞行路线,而不是让每架飞机直接与其他飞机通信。

动机

在软件开发中,随着系统的复杂性增加,对象之间的直接通信会导致系统中对象之间的耦合度过高。这不仅使得系统难以维护,而且在修改一个对象时,可能会影响到其他许多对象。
中介者模式的引入正是为了解决这个问题。通过将对象之间的交互集中到一个中介者中,可以减少对象之间的直接依赖,使得系统更加松耦合,便于维护和扩展。

适用性

中介者模式适用于以下场景:
  1. 系统中对象之间存在复杂的通信关系:当对象之间的交互关系变得复杂且难以管理时,可以使用中介者模式来简化这些交互。
  1. 需要减少对象之间的直接依赖:如果你希望减少对象之间的耦合,使得每个对象都可以独立地进行修改和重用,中介者模式是一个不错的选择。
  1. 需要在运行时动态地调整对象之间的交互:中介者模式允许你在运行时动态地改变对象之间的交互方式,而不需要修改对象的代码。

结构图

以下是中介者模式的类图,使用 Mermaid 语法绘制:

参与者

  1. Mediator(中介者):定义了多个 Colleague 对象之间的通信接口。
  1. ConcreteMediator(具体中介者):实现了 Mediator 接口,协调各个 Colleague 对象之间的交互,它知道所有的 Colleague 对象,并且在必要时可以调用它们的方法。
  1. Colleague(同事类):定义了与 Mediator 交互的接口。每个 Colleague 对象都知道它的 Mediator 对象,但它不知道其他 Colleague 对象。
  1. ConcreteColleague(具体同事类):实现了 Colleague 接口,它通过 Mediator 与其他 Colleague 对象进行通信。

C++ 代码示例

以下是一个简单的 C++ 实现,展示了中介者模式的核心思想:

使用效果与限制

优点

  1. 减少耦合:中介者模式将对象之间的交互集中到一个中介者中,减少了对象之间的直接依赖,使得系统更加松耦合。
  1. 简化对象之间的交互:通过中介者,对象之间的交互变得更加简单和清晰,减少了复杂性。
  1. 易于扩展:由于对象之间的交互集中在中介者中,添加新的对象或修改现有的对象变得更加容易。

缺点

  1. 中介者可能变得复杂:如果系统中的对象很多,中介者可能会变得非常复杂,承担过多的责任,从而成为系统的瓶颈。
  1. 中介者可能成为单点故障:中介者负责协调所有对象之间的交互,如果中介者出现问题,可能会影响整个系统的正常运行。

应用实例

中介者模式在 GUI 框架中非常常见。例如,在一个复杂的用户界面中,多个控件(如按钮、文本框等)需要通过中介者(如窗口管理器)来协调彼此的交互,而不是直接相互引用。

总结

中介者设计模式通过引入一个中介对象来简化对象之间的交互,降低了系统的耦合度,使得系统更加易于维护和扩展。然而,中介者本身可能会变得复杂,因此在使用时需要权衡其利弊。希望这篇文章能帮助你更好地理解中介者模式的核心思想,并在实际项目中灵活运用它。
上一篇
XIAOMI 面试题
下一篇
用面试拷问嵌入式技术栈

Comments
Loading...