行为型模式:中介者模式
中介者模式通过引入一个中介者对象来集中控制对象之间的交互。这样可以解耦多个对象之间的复杂交互关系,使系统更易于维护和扩展。
假设我们有一个简单的聊天室应用,其中有每个用户可以发送群聊消息给其他用户,我们可以使用中介者模式来实现用户之间的消息传递。
#include <iostream>
#include <string>
#include <vector>
// 抽象中介者类
class ChatRoomMediator {
public:
virtual void sendMessage(const std::string& message, class User* sender) = 0;
};
// 用户类
class User {
protected:
ChatRoomMediator* mediator;
std::string name;
public:
User(const std::string& n, ChatRoomMediator* m) : name(n), mediator(m) {}
const std::string& getName() const {
return name;
}
virtual void sendMessage(const std::string& message) {
// 用户通过中介者来发送和接收消息
mediator->sendMessage(message, this);
}
};
// 具体中介者类:聊天室
class ChatRoom : public ChatRoomMediator {
public:
void sendMessage(const std::string& message, class User* sender) override {
// 负责处理用户之间的消息传递:是谁发送的消息
std::cout << "[" << sender->getName() << " sends message]: " << message << std::endl;
}
};
int main() {
ChatRoomMediator* chatroom = new ChatRoom();
User* user1 = new User("Alice", chatroom);
User* user2 = new User("Bob", chatroom);
User* user3 = new User("Charlie", chatroom);
user1->sendMessage("Hello everyone!");
user2->sendMessage("Hi Alice!");
user3->sendMessage("Nice to meet you all!");
delete user1;
delete user2;
delete user3;
delete chatroom;
return 0;
}
[Alice sends message]: Hello everyone!
[Bob sends message]: Hi Alice!
[Charlie sends message]: Nice to meet you all!
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 【C++设计模式】行为型模式:中介者模式
发表评论 取消回复