行为型模式:中介者模式

中介者模式通过引入一个中介者对象来集中控制对象之间的交互。这样可以解耦多个对象之间的复杂交互关系,使系统更易于维护和扩展。

假设我们有一个简单的聊天室应用,其中有每个用户可以发送群聊消息给其他用户,我们可以使用中介者模式来实现用户之间的消息传递。

#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!

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部