中介者模式用于集中对象交互,简化通信。结构包括中介者接口、具体中介者、具体同事。在 c++++ 中实现步骤为:1. 创建中介者接口;2. 创建具体中介者;3. 创建具体同事;4. 实例化对象并协调交互。优点包括松耦合、可扩展性、沟通集中化。

如何在 C++ 中实现中介者设计模式
目的:
中介者模式用于定义一个对象,该对象负责集中对象之间的交互并简化它们之间的通信。
结构:
中介者设计模式的核心结构如下:
立即学习“C++免费学习笔记(深入)”;
在现实生活中的购物过程,购物者需要先到商场,找到指定的产品柜台下,查看产品实体以及标价信息,如果产品合适,就将该产品放到购物车中,到收款处付款结算。电子商务网站通过虚拟网页的形式在计算机上摸拟了整个过程,首先电子商务设计人员将产品信息分类显示在网页上,用户查看网页上的产品信息,当用户看到了中意的产品后,可以将该产品添加到购物车,最后使用网上支付工具进行结算,而货物将由公司通过快递等方式发送给购物者
- 中介者:定义集中对象交互的接口。
- 具体中介者:实现中介者接口,协调特定对象之间的交互。
- 具体同事:定义与中介者交互的接口,并与其沟通以进行交互。
实现:
在 C++ 中实现中介者模式的步骤如下:
- 创建中介者接口:
class Mediator {
public:
virtual void Notify(Colleague* colleague, const std::string& message) = 0;
};- 创建具体中介者类:
class ConcreteMediator : public Mediator {
public:
void Notify(Colleague* colleague, const std::string& message) override {
// 根据 message 和 colleague 协调交互
}
};- 创建具体同事类:
class ConcreteColleague1 : public Colleague {
public:
ConcreteColleague1(Mediator* mediator) : Colleague(mediator) {}
};
class ConcreteColleague2 : public Colleague {
public:
ConcreteColleague2(Mediator* mediator) : Colleague(mediator) {}
};实战案例:
考虑一个聊天室应用程序,其中有多个用户可以互相发送消息。我们可以使用中介者模式来简化用户之间的通信,而不是让它们直接彼此交互。
在这款应用程序中:
- 中介者是聊天室类,负责管理所有用户并转发消息。
- 具体中介者是聊天室类的实现,它实现 Notify() 方法以根据接收消息的用户协调发送消息。
- 具体同事是用户类的实现,它们使用中介者发送和接收消息。
好处:
- 松耦合:中介者模式减少了对象之间的耦合,因为具体对象只与中介者交互,而不是彼此交互。
- 可扩展性:可以轻松地添加新对象,而无需修改现有代码。
- 沟通集中化:中介者将沟通的责任集中在单个对象中,简化了故障排除和调试。










