【C++设计模式】行为型模式:中介者模式

行为型模式:中介者模式

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

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

#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!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

二进制人工智能

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值