C++ 设计模式之中介者模式
简介
1、中介者模式(Mediator)是一种行为型设计模式,它用于减少对象之间的直接耦合,使得这些对象可以松散地耦合在一起,并且可以通过一个中介者对象来间接地交互。中介者模式通常用于一组对象以定义良好但是复杂的方式进行通信的场合。
2、中介者模式 (Mediator)应用场景包括但不限于:
1、当一组对象以定义明确但复杂的方式交互时,特别是当你不想让这些交互形成一个“不明确的对象网”时。
2、当你想重用一个对象在不同的场景中,而这些场景需要大量不同的交互时。
3、中介者模式 (Mediator)的构成
3.1、中介者(Mediator):定义了一个接口,用于与各个同事对象通信,并封装了协调各个同事对象之间的交互行为。
class ChatRoom
{
public:
virtual void sendMessage(const std::string& sender, const std::string& receiver, const std::string& message) = 0;
};
3.2、同事类:每一个同事类都知道中介者对象,并且与其他的同事对象通信时,一定要通过中介者对象协作。同事类之间一般不直接引用。
class User
{
public:
User(ChatRoom* chat, std::string n);
std::string GetName();
ChatRoom* GetChatRoom();
virtual void send(const std::string& message) = 0;
virtual void receive(const std::string& sender, const std::string& message) = 0;
private:
ChatRoom* mediator;
std::string name;
};
4、中介者模式 (Mediator)的优点
4.1、降低系统复杂性: 中介者模式简化了对象之间的交互,使对象不需要显式地相互引用。
4.2、提升对象的复用性: 减少对象间依赖,有利于提高对象的可复用性。
4.3、集中控制交互: 将系统的交互复杂性集中到中介者中,使变更和维护变得更容易。
4.4、增强系统的可维护性:如果对象间的交互非常复杂,把这些交互逻辑放在中介者中可以集中管理,提高系统的可维护性。
5、中介者模式