当前位置: 首页 > news >正文

wordpress站内查找wordpress 域名 根目录

wordpress站内查找,wordpress 域名 根目录,网站格式有哪些内容,网络会议系统国内十大品牌一#xff0c;中介者模式的定义 中介者模式是一种行为型设计模式。它通过一个中介者对象将多个对象之间的交互关系进行封装#xff0c;使得对象之间的交互需要通过中介者对象来完成。该设计模式的结构很容易理解#xff0c;以中介者为中心。 中介者模式的设计思想侧重于在…一中介者模式的定义 中介者模式是一种行为型设计模式。它通过一个中介者对象将多个对象之间的交互关系进行封装使得对象之间的交互需要通过中介者对象来完成。该设计模式的结构很容易理解以中介者为中心。 中介者模式的设计思想侧重于在对象之间增加一个用来调度的中介。 有了中介者模式各个对象可以专注于各自的业务处理逻辑而不需要关心通信的具体实现细节。 中介者模式在现实生活中的抽象实例 航空管制系统航空管制系统作为中介者协调飞机、航空公司和机场的通信和协作。 交易系统在金融领域交易系统将银行、金融机构、客户等各个参与者进行协调确保资金的安全快速转移。 买房中介买房中介充当着买卖双方之间的桥梁和调解者的角色确保双方利益的平衡和交易的顺利进行。 二中介者模式的结构 中介者模式主要包含以下组件 1.抽象中介者(Mediator)定义了对象之间相互通信的规则定义了管理对象和消息通信的统一接口。 2.抽象同事对象(Colleague)是参与通信的各个对象内部包含对中介者对象的引用。负责将消息发送给中介者以及接收并处理中介者发来的消息。 3.具体中介者(Concrete Mediator)包含对抽象中介者的具体实现负责协调各个对象之间的通信协调的方式以转发消息为主。 4.具体同事对象(Concrete Colleague)包含对抽象同事对象的具体实现。它们之间通过调用中介者的接口进行通信并接收和处理中介者转发给它们的消息。 组件之间的工作步骤如下 1.初始化中介者对象。 2.各个同事对象与中介者关联将中介者对象传递给各个同事对象。 3.同事对象与中介者通信同事对象调用中介者对象提供的通信接口由中介者负责将信息转发给目标同事对象。 对应UML类图 三中介者模式代码样例 #include iostream #include string #include vectorclass Colleague;class Mediator{ public:virtual void sendMessage(const std::string msg, Colleague* colleague) 0;virtual void addColleague(Colleague* colleague) 0; };class Colleague{ public:Colleague(Mediator* mediator) : mediator_(mediator) {}virtual void sendMessage(const std::string message) 0;virtual void receiveMessage(const std::string message) 0; protected:Mediator* mediator_; };class ConcreteMediator : public Mediator{ public:void sendMessage(const std::string msg, Colleague* colleague) override{for (auto col : colleagues_) {if (col ! colleague) {col-receiveMessage(msg);}}}void addColleague(Colleague* colleague) override {colleagues_.push_back(colleague);} private:std::vectorColleague* colleagues_; };class ConcreteColleague : public Colleague{ public:ConcreteColleague(Mediator* mediator) : Colleague(mediator) {}void sendMessage(const std::string message) override {mediator_-sendMessage(message, this);}void receiveMessage(const std::string message) override {std::cout Received message: message std::endl;} };int main() {Mediator* mediator new ConcreteMediator();Colleague* colleague1 new ConcreteColleague(mediator);Colleague* colleague2 new ConcreteColleague(mediator);mediator-addColleague(colleague1);mediator-addColleague(colleague2);colleague1-sendMessage(Hello from colleague1);colleague2-sendMessage(Hello from colleague2);delete colleague1;delete colleague2;delete mediator;return 0; } 运行结果 Received message: Hello from colleague1 Received message: Hello from colleague2 四中介者模式的应用场景 事件驱动架构应用程序中按钮点击等事件不需要直接关联所有处理响应的逻辑而是通过一个“事件总线”或“消息中间件”来分发消息。 GUI用户界面在UI组件间传递事件或更新状态时可以使用中介者模式避免硬编码依赖。 分布式系统分布式应用中设定一个集中式的服务器作为中介协调客户端之间的交互。 消息队列在异步通信场景发送者和接收者通过一个消息中间件来传递信息方便解耦和事务管理。 五中介者模式的优缺点 中介者模式的优点 降低了对象之间的耦合易于维护。 可以实现对通信的集中控制。 方便随时修改和消息对应的事件处理。 在不改变原有对象的基础上可以灵活添加新的消息类型。 中介者模式的缺点 容易导致对系统的过度设计。 当对象很多时中介者会变得复杂和难以管理。 通信期间需要额外的调度性能开销大。 六代码实战 Demo1基于中介者模式实现的消息群发功能 #include iostream #include string #include vectorclass User;class Mediator { public:virtual void sendMessage(const std::string message, User* user) 0;virtual void addUser(User* user) 0; };class User { public:User(const std::string name, Mediator* mediator){this-name name;this-mediator mediator;}const std::string getName() const {return name;}void sendMessage(const std::string message) {mediator-sendMessage(message, this);}virtual void receiveMsg(const std::string message) 0; private:std::string name;Mediator* mediator; };class ChatRoom : public Mediator { public:void addUser(User* user) {users.push_back(user);}void sendMessage(const std::string message, User* sender) override {for (User* user : users) {if (user ! sender) {user-receiveMsg(message);}}} private:std::vectorUser* users; };class ChatUser : public User { public:ChatUser(const std::string name, Mediator* mediator) : User(name, mediator) {}void receiveMsg(const std::string msg) override {std::cout getName() received a message: msg std::endl;} };int main() {Mediator* chatRoom new ChatRoom();User* user1 new ChatUser(User1, chatRoom);User* user2 new ChatUser(User2, chatRoom);User* user3 new ChatUser(User3, chatRoom);chatRoom-addUser(user1);chatRoom-addUser(user2);chatRoom-addUser(user3);user1-sendMessage(Hello, everyone!);delete user1;delete user2;delete user3;delete chatRoom;return 0; } 运行结果 User2 received a message: Hello, everyone! User3 received a message: Hello, everyone! Demo2模拟的聊天室 #include iostream #include string #include vectorusing namespace std;struct ChatRoom {virtual void broadcast(string from, string msg) 0;virtual void message(string from, string to, string msg) 0; };struct Person {string m_name;ChatRoom* m_room{ nullptr };vectorstring m_chat_log;Person(string n) : m_name(n) {}void say(string msg) const {m_room-broadcast(m_name, msg);}void pm(string to, string msg) const {m_room-message(m_name, to, msg);}void receive(string from, string msg) {string s{ from : \ msg \ };cout [ m_name s chat session] s \n;m_chat_log.emplace_back(s);} };struct GoogleChat: ChatRoom {vectorPerson* m_people;void broadcast(string from, string msg) {for (auto p : m_people)if (p-m_name ! from)p-receive(from, msg);}void join(Person* p) {string join_msg p-m_name joins the chat;broadcast(room, join_msg);p-m_room this;m_people.push_back(p);}void message(string from, string to, string msg) {auto target find_if(begin(m_people), end(m_people),[](const Person* p) {return p-m_name to;});if (target ! end(m_people)) (*target)-receive(from, msg);} };int main() {GoogleChat room;Person john{ John };Person jane{ Jane };room.join(john);room.join(jane);john.say(hi room);jane.say(oh, hey john);Person simon{ Simon };room.join(simon);simon.say(hi everyone!);jane.pm(Simon, glad you found us, simon!);return EXIT_SUCCESS; } 运行结果 [Johns chat session]room: Jane joins the chat [Janes chat session]John: hi room [Johns chat session]Jane: oh, hey john [Johns chat session]room: Simon joins the chat [Janes chat session]room: Simon joins the chat [Johns chat session]Simon: hi everyone! [Janes chat session]Simon: hi everyone! [Simons chat session]Jane: glad you found us, simon! 七参考阅读 https://www.geeksforgeeks.org/mediator-design-pattern/ https://www.patterns.dev/vanilla/mediator-pattern/ https://vishalchovatiya.com/posts/mediator-design-pattern-in-modern-cpp/ https://softwarepatterns.com/cpp/mediator-software-pattern-cpp-example
http://www.dnsts.com.cn/news/140897.html

相关文章:

  • 瑞安联科网站建设个人建什么网站好
  • 网站推广软件免费下载正规的网站建设公
  • 企业网站包含的内容wordpress表白系统
  • 南昌企业网站建设费用建设银行余额查询网站
  • 广州天华建筑设计有限公司谷歌seo什么意思
  • 网站推广 济南佛山做企业网站的公司
  • 网站代理登录域名一个完整的营销策划案范文
  • 微信内部劵网站怎么做太平洋车险报价入口
  • 单页网站 html网站建设 会议主持稿
  • 做代售机票网站程序全网营销思路
  • 什么网站流量高linux服务器下如何新建网站
  • 杭州集团公司网站制作开一个网站的流程
  • 本溪做网站的做外贸 访问国外网站 怎么办
  • 电商网站建设费用价格中国企业网银
  • 广州优化网站推广网络运维实习报告
  • 有几个网站可以做代发的广州计算机软件公司排名
  • 怎么做降落伞制作方法最专业的网站建设seo优化服务公司
  • 凡科网做网站教程微信链接网站怎么做的
  • 建设银行网站怎么登陆佛系汉化组.wordpress
  • 网站目录层级建设seo做得比较好的企业案例
  • 做软件赚钱的网站php作文网站源码
  • 模板的网站都有哪些wordpress 代码插件
  • 赣州做网站公司2022年重大时政热点
  • 建设网站的步骤知乎wordpress 主题导出
  • 网上做兼职正规网站上海网站建设联系电
  • 微信 app 微网站 整合广告产品
  • 北京做网站建设有发展吗wordpress文章字符插件
  • 深圳品牌网站建设公司排名网站优化推广哪家好
  • 营销型网站建设方法dw网站建设视频下载
  • 网站的优化与推广分析查法人信息的系统