1. 中介者模式深度解析
中介者模式是一种行为型设计模式,它通过引入一个中介对象来封装一组对象之间的交互。这种模式的核心思想是将对象间的网状交互关系转化为星型结构,从而降低系统复杂度。
1.1 模式核心思想
想象一下一个繁忙的机场控制塔场景。如果没有控制塔,每架飞机都需要直接与其他所有飞机通信来协调起降,这将导致通信混乱和极高的碰撞风险。控制塔作为中介者,集中处理所有通信请求,飞机只需与控制塔交互,大大简化了通信流程。
在软件设计中,中介者模式的工作原理与此类似:
- 各组件(Colleague)不再直接相互引用
- 所有交互通过中介者(Mediator)进行
- 中介者负责协调和控制交互逻辑
1.2 模式结构解析
让我们拆解中介者模式的典型结构:
- Mediator(抽象中介者):定义同事对象到中介者对象的接口
- ConcreteMediator(具体中介者):实现抽象中介者的接口,协调各同事对象
- Colleague(抽象同事类):定义同事对象的接口,持有中介者引用
- ConcreteColleague(具体同事类):实现抽象同事类的接口
关键提示:中介者模式最精妙之处在于,它通过引入中间层,将原本O(n²)的交互复杂度降低为O(n),这在大型系统中能显著降低维护成本。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 中介者模式实战实现
2.1 场景案例:国际对话系统
我们以一个简化的国际对话系统为例,展示中介者模式的具体实现。这个系统中,各国不直接对话,而是通过联合国安理会进行交流。
2.1.1 基础结构定义
首先定义国家和联合国的基础结构:
c复制typedef enum {
USA,
IRAQ,
NATIONMAX
} Nations;
struct UnitedNation;
typedef struct Country {
char *name;
struct UnitedNation *mediator;
void (*declare)(struct Country *, Nations, char *);
} Country;
typedef struct UnitedNation {
Country
