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

商城网站栏目wordpress模版标签

商城网站栏目,wordpress模版标签,下载ppt模板免费,有做销售产品的网站有哪些【声明】本题目来源于卡码网#xff08;题目页面 (kamacoder.com)#xff09; 【提示#xff1a;如果不想看文字介绍#xff0c;可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是中介者模式 #xff08;第16种模式#xff09; 中介者模式#xff08;Medi… 【声明】本题目来源于卡码网题目页面 (kamacoder.com) 【提示如果不想看文字介绍可以直接跳转到C编码部分】 【设计模式大纲】 【简介】 -- 什么是中介者模式 第16种模式 中介者模式Mediator Pattern也被称为调停者模式是⼀种⾏为型设计模式它通过⼀个中介对象来封装⼀组对象之间的交互从⽽使这些对象不需要直接相互引⽤。这样可以降低对象之间的耦合度使系统更容易维护和扩展。         当⼀个系统中的对象有很多且多个对象之间有复杂的相互依赖关系时其结构图可能是下⾯这样的。 这种依赖关系很难理清这时我们可以引⼊⼀个中介者对象来进⾏协调和交互。中介者模式可以使得系统的⽹状结构变成以中介者为中⼼的星形结构每个具体对象不再通过直接的联系与另⼀个对象发⽣相互作⽤⽽是通过“中介者”对象与另⼀个对象发⽣相互作⽤。 【基本结构】 中介者模式包含以下⼏个基本角色 抽象中介者Mediator 定义中介者的接⼝⽤于各个具体同事对象之间的通信。具体中介者Concrete Mediator 实现抽象中介者接⼝负责协调各个具体同事对象的交互关系它需要知道所有具体同事类并从具体同事接收消息向具体同事对象发出命令。抽象同事类Colleague 定义同事类的接⼝维护⼀个对中介者对象的引⽤⽤于通信。具体同事类Concrete Colleague 实现抽象同事类接⼝每个具体同事类只知道⾃⼰的⾏为⽽不了解其他同事类的情况因为它们都需要与中介者通信通过中介者协调与其他同事对象的交互。 【简易实现 - Java】 以Java代码先作以说明 1. 抽象中介者 // 抽象中介者 public abstract class Mediator {void register(Colleague colleague);// 定义⼀个抽象的发送消息⽅法public abstract void send(String message, Player player); } 2. 具体中介者 // 具体中介者 public class ConcreteMediator extends Mediator {private ListColleague colleagues new ArrayList();public void register((Colleague colleague) {colleagues.add(colleague);}Overridepublic void send(String message, Colleague colleague) {for (Colleague c : colleagues) {// 排除发送消息的同事对象if (c ! colleague) {c.receive(message);}}} } 3. 同事对象 // 同事对象 abstract class Colleague {protected Mediator mediator;public Colleague(Mediator mediator) {this.mediator mediator;}// 发送消息public abstract void send(String message);// 接收消息public abstract void receive(String message); } 4. 具体同事对象1 // 具体同事对象1 class ConcreteColleague1 extends Colleague {public ConcreteColleague1(Mediator mediator) {super(mediator);}Overridepublic void send(String message) {mediator.send(message, this);}Overridepublic void receive(String message) {System.out.println(ConcreteColleague1 received: message);} } 5. 具体同事对象2 // 具体同事对象2 class ConcreteColleague2 extends Colleague {public ConcreteColleague2(Mediator mediator) {super(mediator);}Overridepublic void send(String message) {mediator.send(message, this);}Overridepublic void receive(String message) {System.out.println(ConcreteColleague2 received: message);} } 6. 客户端 /** * version Copyright (c) 2024 NCDC, Servo。 Unpublished - All rights reserved * file MediatorMode.hpp * brief 中介者模式 * autor 写代码的小恐龙er * date 2024/01/18 */// 客户端 public class Main{public static void main(String[] args) {// 创建中介者Mediator mediator new ConcreteMediator();// 创建同事对象Colleague colleague1 new ConcreteColleague1(mediator);Colleague colleague2 new ConcreteColleague2(mediator);// 注册同事对象到中介者mediator.register(colleague1);mediator.register(colleague2);// 同事对象之间发送消息colleague1.send(Hello from Colleague1!);colleague2.send(Hi from Colleague2!);} } 【使用场景】 中介者模式使得同事对象不需要知道彼此的细节只需要与中介者进⾏通信简化了系统的复杂度也降低了各对象之间的耦合度但是这也会使得中介者对象变得过于庞⼤和复杂如果中介者对象出现问题整个系统可能会受到影响。中介者模式适⽤于当系统对象之间存在复杂的交互关系或者系统需要在不同对象之间进⾏灵活的通信时使⽤可以使得问题简化 【C编码部分】 1. 题目描述 小明正在设计一个简单的多人聊天室系统有多个用户和一个聊天室中介者用户通过中介者进行聊天请你帮他完成这个系统的设计。 2. 输入描述 第一行包括一个整数N,表示用户的数量1 N 100) 第二行是N个用户比如User1 User2 User3用空格分隔 第三行开始每行包含两个字符串表示消息的发出者和消息内容用空格分隔 3. 输出描述 对于每个用户输出一行包含该用户收到的所有消息内容。 4. C编码 /** * version Copyright (c) 2024 NCDC, Servo。 Unpublished - All rights reserved * file MediatorMode.hpp * brief 中介者模式 * autor 写代码的小恐龙er * date 2024/01/18 */#include iostream #include string #include vector #include mapusing namespace std;// 前置声明// 抽象中介者类 -- 定义中介者的接⼝⽤于各个具体同事对象之间的通信 class ChatRoomMediator; // 具体中介者类 -- 实现抽象中介者接⼝负责协调各个具体同事对象的交互关系 class ChatRoomMediatorImpl; // 抽象同事类 -- 定义同事类的接⼝维护⼀个对中介者对象的引⽤⽤于通信 class ChatUser; // 具体同事类 -- 实现抽象同事类接⼝每个具体同事类只知道⾃⼰的⾏为 class ConcreteChatUser;// 类的定义// 抽象中介者类 class ChatRoomMediator { // 成员接口函数 public:// 获取所有的同事类virtual std::mapstring, ChatUser* GetUsers() 0;// 添加同事至中介类virtual void AddUser(ChatUser *user) 0;// 中介者发送信息 至其他的所有用户virtual void SendMessage(string sender, string message) 0;};// 抽象同事类 -- 接口 class ChatUser { // 成员函数接口 public: // 获取当前的同事姓名virtual string GetName() 0;// 发送信息至其他人 通过 中介者来代理virtual void SendMessage(string message) 0;// 接收信息函数接口virtual void ReceiveMessage(string sender, string message) 0;// 获取所有的信息集virtual std::vectorstring GetAllMessages() 0;// 将接收到的信息存放至信息集中 protected:virtual void AddRecvMessageIntoVec(string message) 0;};// 具体中介者类 class ChatRoomMediatorImpl : public ChatRoomMediator { // 成员数据 private:std::map string, ChatUser* _chatUsers; // 成员函数接口 public:// 获取所有的同事类 重载std::mapstring, ChatUser* GetUsers() override{return _chatUsers;}// 添加同事至中介类 重载void AddUser(ChatUser *user) override{_chatUsers.insert(std::pairstring, ChatUser*(user-GetName(), user));}// 中介者发送信息 至其他的所有用户 函数重载void SendMessage(string sender, string message) override{for(mapstring, ChatUser*::iterator it _chatUsers.begin(); it ! _chatUsers.end(); it){if(it-first ! sender){it-second-ReceiveMessage(sender, message);}}} };// 具体同事类 class ConcreteChatUser : public ChatUser { // 成员数据 private:// 用户姓名string _userName;// 中介者ChatRoomMediator * _mediator;// 所有接收到的信息std::vectorstring _recvMessages; // 成员函数接口 public:ConcreteChatUser(string name, ChatRoomMediator *mediator) { this-_userName name;this-_mediator mediator;this-_mediator-AddUser(this);}// 获取当前的同事姓名string GetName() override {return _userName;}// 发送信息至其他人 通过 中介者来代理void SendMessage(string message) override {// 通过中介者去发送信息_mediator-SendMessage(_userName, message);}// 接收信息函数接口void ReceiveMessage(string sender, string message) override{string messages _userName received: message;std::cout messages endl;}// 获取所有的信息集std::vectorstring GetAllMessages() override {return _recvMessages;}// 将接收到的信息存放至信息集中 protected:void AddRecvMessageIntoVec(string message) override{_recvMessages.push_back(message);} };int main() {// 用户数量int userNum 0;std::cin userNum;// 保存所有的用户std::vectorstring usersV;usersV.resize(userNum);for(int i 0; i userNum; i){std::cin usersV[i];}// 抽象中介者ChatRoomMediator *mediator new ChatRoomMediatorImpl();// 抽象用户类ChatUser *user nullptr;// 在中介者类中添加所有的用户类// 遍历for(int i 0; i userNum; i){// 构造具体的用户类user new ConcreteChatUser(usersV[i], mediator);}// 此时已经在中介者类中添加了所有的用户// 遍历 去发送信息for(int i 0; i userNum; i){// 获取发送者 和 消息string senderName ;string sendMessage ;// 输入std:: cin senderName sendMessage;// 用户通过中介者去发送消息mediator-SendMessage(senderName, sendMessage);}// 析构if(user ! nullptr){delete user;user nullptr;}delete mediator;mediator nullptr;return 0;} 【扩展和代理模式的区别】 中介者模式Mediator Pattern和代理模式Proxy Pattern) 在某些表述上有些类似但是他们是完全不同的两个设计模式中介者模式的⽬的是降低系统中各个对象之间的直接耦合通过引⼊⼀个中介者对象使对象之间的通信集中在中介者上。而在代理模式中客户端通过代理与⽬标对象进⾏通信。代理可以在调⽤⽬标对象的⽅法前后进⾏⼀些额外的操作其⽬的是控制对对象的访问它们分别解决了不同类型的问题。 ...... To be continued.
http://www.pierceye.com/news/908407/

相关文章:

  • 在智联招聘网站做销售医疗软件网站建设公司排名
  • 小程序商城设计太原搜索引擎优化
  • 旅游商业网站策划书网页在线设计平台
  • 网站建设的软文怎么写深圳我的网站
  • 动漫网站建设意义js 取网站域名
  • 网站建设项目功能需求分析报告做健身类小程序的网站
  • 专业建设网站公司哪家好建设工程合同管理多少分及格
  • 网站制作是那个大连开发区一中
  • 做预约的网站2345网址导航官网下载
  • 网站建设创建wordpress用户评论图片
  • .耐思尼克官方网站工程公司会计账务处理
  • 如何进入微网站毕业设计网站开发
  • 已经备案的网站新增ip怎么做网站分站如何做
  • 网站建设 常州怎么做网络推广营销
  • 海南建设工程信息网站常用网站建设软件
  • 福州网络推广建站网站建设工作室深圳
  • html的网站案例长春头条新闻今天
  • 免费的十大免费货源网站产品设计开发流程图
  • 做网站的内容网站建设工作室有几个部门
  • jquery win8风格企业网站模板wordpress编辑器 模板
  • 北京国互网网站建设电话免费网站怎么盈利模式
  • 网站建设图片如何加载ssh做电商 网站
  • 网站开发资质网站域名服务错误
  • html5 社团网站模板 代码下载上海做营销网站哪个公司好
  • 动易网站 模板南京企业建站系统模板
  • 网站实名网站建设技术百科
  • 网站策划书范文模板网盟推广费
  • 先做网站还是先做app唐山模板建站定制网站
  • 小城镇建设的网站中的主要观点廊坊网站设计公司
  • 银联支付网站建设企业qq登录