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

建设专业网站价格雄安做网站优化的公司

建设专业网站价格,雄安做网站优化的公司,flash云网站,互动网站制作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/13220/

相关文章:

  • 做网站卖东西送上门做购物商城类网站需要
  • wordpress免费网页建站泰安建设工程信息网
  • 营销型网站应必备的七大功能大型网站建设济南兴田德润o团队怎么样
  • 网站开发计划时间九江市建设工程质量监督站网站
  • 网站首页模板免费下载医药网站建设
  • 建设一个棋牌网站都得准备什么山东东营市有几个区县
  • 河北网站备案流程用织梦做领券网站
  • 怎样做app网站建设合川网站建设
  • 网站设计风格大全玉林英文网站建设
  • 网站开发规格传奇小程序代理
  • 特色的企业网站建设南昌自主建站模板
  • 手机和网站页面模板珠江新城越秀金融大厦
  • 高要区住房和城乡建设局网站商城网站的运营
  • 深圳网站制作建设公司推荐2024房地产趋势分析
  • 网站建立不安全怎么设置通过深圳南山做网站的公司
  • 伊利网站设计照片做3d网站
  • 做外国人的生意哪家网站好网站排名做不上去
  • 成品app直播源码下载湖州网站seo优化
  • 煎蛋网站用什么做的qq刷赞网站推广软件
  • 永康网站建设专业公司在微信上做网站
  • yollow网站推广网建管理是干嘛的
  • 做网站免费搭建企业网站开发流程
  • 双通网络网站建设网站开发的高级阶段包括什么
  • 网站如何被百度快速收录软件外包公司怎么经营
  • 南京网站建设知识自己做的网站怎么样把里面的内容下载下来
  • 做钓鱼网站会被抓吗做做网站需要多少钱
  • 网站ip地址 转向域名长春网站制作诚推源晟
  • 成都网站建设科技公静海网站建设制作
  • 北京建设质量协会网站网站中搜索栏怎么做
  • ico 众筹网站开发sql网站模板