wordpress 懸浮播放器公司網(wǎng)站seo公司
行為型模式:中介者模式
中介者模式通過引入一個(gè)中介者對象來集中控制對象之間的交互。這樣可以解耦多個(gè)對象之間的復(fù)雜交互關(guān)系,使系統(tǒng)更易于維護(hù)和擴(kuò)展。
假設(shè)我們有一個(gè)簡單的聊天室應(yīng)用,其中有每個(gè)用戶可以發(fā)送群聊消息給其他用戶,我們可以使用中介者模式來實(shí)現(xiàn)用戶之間的消息傳遞。
#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) {// 用戶通過中介者來發(fā)送和接收消息mediator->sendMessage(message, this);}};// 具體中介者類:聊天室
class ChatRoom : public ChatRoomMediator {
public:void sendMessage(const std::string& message, class User* sender) override {// 負(fù)責(zé)處理用戶之間的消息傳遞:是誰發(fā)送的消息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!