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

网站建设衤金手指花总十四企业微信app官网下载

网站建设衤金手指花总十四,企业微信app官网下载,wordpress上传附件类型,企业网站一般要素1、中介者模式的提出 在软件组件开发过程中,如果存在多个对象,且这些对象之间存在的相互交互的情况不是一一对应的情况,这种功能组件间的对象引用关系比较复杂,耦合度较高。如果有一些新的需求变化,则不易扩展。中介者…

1、中介者模式的提出

在软件组件开发过程中,如果存在多个对象,且这些对象之间存在的相互交互的情况不是一一对应的情况,这种功能组件间的对象引用关系比较复杂,耦合度较高。如果有一些新的需求变化,则不易扩展。中介者模式可以解决这种问题。中介者模式使用一个“中介对象”去管理对象间的关联关系,这个中介对象里面定义了对象间的数据统一交互接口,解耦对象间的直接交互依赖,从而提高代码的扩展性。

2、需求描述

有2个线上人员,这两个线上人员可以相互发送和接收对象的消息。设计一个线上人员数据交互的代码,且代码架构便于扩展。

3、中介者模式的代码实现

(1)UML图如下:

 

 (2)代码实现如下:

#include <iostream>
#include <vector>class Mediator;
class OnlinerPeople
{
protected:Mediator* mediator;
public:virtual void sendMsg(std::string msg)=0;virtual void receiveMsg(std::string msg)=0;virtual ~OnlinerPeople(){};
};class Mediator
{
protected:std::vector<OnlinerPeople*>vecOnlinePeoples;
public:virtual void sendMessage(std::string msg,OnlinerPeople* pepole)=0;virtual void addOnliners(OnlinerPeople* people)=0;virtual ~Mediator(){};
};class ConcreteMediator:public Mediator
{
public:void addOnliners(OnlinerPeople* people)override{vecOnlinePeoples.emplace_back(people);};virtual void sendMessage(std::string msg, OnlinerPeople *pepole) override{for(auto it =  vecOnlinePeoples.begin();it != vecOnlinePeoples.end(); it++){if( *it != pepole){(*it)->receiveMsg(msg);}}}
};class OnlinerPeople1:public OnlinerPeople
{
public:void Init(Mediator* mediator){this->mediator = mediator;}virtual void sendMsg(std::string msg) override{std::cout << "OnlinerPeople1 sendMsg: " << std::endl;mediator->sendMessage(msg,this);}virtual void receiveMsg(std::string msg) override{std::cout << "OnlinerPeople1 receive msg: " << msg << std::endl;}
};class OnlinerPeople2:public OnlinerPeople
{
public:void Init(Mediator* mediator){this->mediator = mediator;}virtual void sendMsg(std::string msg) override{std::cout << "OnlinerPeople2 sendMsg: " << std::endl;mediator->sendMessage(msg,this);}virtual void receiveMsg(std::string msg) override{std::cout << "OnlinerPeople2 receive msg: " << msg << std::endl;}
};
class Client
{
private:Mediator* mediator{nullptr};OnlinerPeople1 people1;OnlinerPeople2 people2;
public:Client(Mediator* p){mediator = p;people1.Init(mediator);people2.Init(mediator);};void DoWork(){mediator->addOnliners(&people1);mediator->addOnliners(&people2);people1.sendMsg("hello people2");people2.sendMsg("hello people1");};
};int main()
{Mediator* mediator = new ConcreteMediator();Client obj(mediator);obj.DoWork();delete mediator;mediator = nullptr;return 0;
}

 程序运行结果如下: 

http://www.yayakq.cn/news/674395/

相关文章:

  • 美食优秀设计网站新闻危机公关
  • 网站建设方案及报价苏州建站模板厂家
  • 企业营销策划是什么中山短视频seo教程
  • o2o模式的电商平台网站有哪些搜索引擎营销seo
  • 佛山网站建设哪家评价高wordpress 橘子皮模板
  • 怎样使用二维码做网站大连意动网站建设有限公司怎么样
  • phpcms网站打开空白河海大学学风建设网站
  • 秦皇岛网站建设找汉狮2017学脚本语言做网站
  • 网站首页 排版做网站学习
  • 规划营销型网站结构重庆唐卡装饰公司
  • 二手服务器做网站个人网站制作申请
  • ftp下的内部网站建设搜索引擎推广网站
  • 海外搜索引擎网站建设做网站如何赢利的
  • 古镇小企业网站建设广平企业做网站推广
  • 萍乡市建设局网站服务网站开发
  • 网上竞价采购网站建设网站建设选择什么模式
  • 怎么更改网站备案信息新手自己建网站
  • 网站建设中的安全问题成都网站建设工作室
  • 中文字体怎么设计网站淮南市重点工程建设管理局网站
  • asp网站的优点网络营销外包网络推广
  • 网站小图标素材网站建设备案条件
  • 科技类公司网站设计9377游戏官网
  • 济宁市建设工程质量监督站网站网站建设开发报告论文
  • 网站模板工具c 做网站后台
  • html5教育网站wordpress仿北京时间
  • 可以免费做网站网站建设对企业的好处有哪些
  • 阜阳网站建设价格低市场营销策略名词解释
  • 深圳装修公司排名前十网站搜索引擎优化技术
  • 有实力的网站建设公司北京注册公司虚拟地址
  • 网站服务器租用有什么好百度推广代理商