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

邓修明调研成都网站建设什么网站可以接单做设计方案

邓修明调研成都网站建设,什么网站可以接单做设计方案,关于申请网站建设的报告,wordpress 分类文章插件目录 模式简介 介绍 优点 缺点 代码实现 场景说明 实现代码 运行结果 模式简介 观察者模式#xff08;Observer Pattern#xff09;#xff0c;也叫我们熟知的发布-订阅模式。 它是一种行为型模式。 介绍 观察者模式主要关注的是对象的一对多的关系#xff0c; …目录 模式简介 介绍 优点 缺点 代码实现 场景说明 实现代码 运行结果 模式简介 观察者模式Observer Pattern也叫我们熟知的发布-订阅模式。 它是一种行为型模式。 介绍 观察者模式主要关注的是对象的一对多的关系 也就是多个对象依赖于一个对象当该对象的状态发生改变时其他对象都能够收到相应的通知 意图 定义对象间的一种一对多的依赖关系当一个对象的状态发生改变时所有依赖于它的对象都得到通知并被自动更新。主要解决 一个对象状态改变给其他对象通知的问题而且要考虑到易用和低耦合保证高度的协作。如何解决 使用面向对象技术可以将这种关系弱化。 优点 观察者和被观察者是抽象耦合的建立了一套触发机制。 缺点 如果一个被观察者对象有很多的直接和间接的观察者的话通知所有的观察者需要花费很长的时间如果在观察者和被观察者目标之间有循环依赖的话观察目标会触发他们之间的循环调用可能会导致系统崩溃观察者模式没有相应的机制让观察者知道所观察的目标对象是怎么发生变化的而仅仅是知道观察目标发生了变化。 代码实现 场景说明 我们现在有三个观察者和三种消息这三个观察者分别对不同的消息感兴趣 我们实现的话可以简单的设置三个观察者一个主题类被观察者。 这三个观察者可以设置自己喜欢的、感兴趣的消息类型1、2、3。 他们处理收到的消息就是打印一下自己收到了什么消息。 具体实现如下 实现代码 /*observer1 observer2 observer3Subject 主题主题更改应该及时通知相应的观察者去处理相应的事件 */ class Observer // 观察者抽象类 { public://处理消息的接口virtual void handle(int msgid) 0; };//第一个观察者实例 class Observer1 : public Observer { public:void handle(int msgid){switch (msgid){case 1:cout Observer1 recv 1 msg endl;break;case 2:cout Observer1 recv 2 msg endl;break;default:cout Observer1 recv unkonw msg! endl;break;}} }; //第二个观察者实例 class Observer2 : public Observer { public:void handle(int msgid){switch (msgid){case 2:cout Observer2 recv 2 msg endl;break;default:cout Observer2 recv unkonw msg! endl;break;}} }; //第三个观察者实例 class Observer3 : public Observer { public:void handle(int msgid){switch (msgid){case 1:cout Observer3 recv 1 msg endl;break;case 3:cout Observer3 recv 3 msg endl;break;default:cout Observer3 recv unkonw msg! endl;break;}} };//主题类 class Subject { public://给主题增加观察者对象void addObserver(Observer* obser,int msgid){_subMap[msgid].push_back(obser);}//主题检测发生改变通知相应的观察者对象处理事件void dispatch(int msgid){auto it _subMap.find(msgid);if (it ! _subMap.end()){//通过多态实现不同的指向for (Observer* pObser : it-second){pObser-handle(msgid);}}} private://用来保存订阅的消息unordered_mapint, listObserver* _subMap; }; 我们可以看到主题类Subject的数据成员是一个unordered_map。使用这个是因为我们不需要数据是有序的为了提高增删查的速率使用了无序map。 使用map的好处是它作为一个键值对可以存储我们想要的数据类型消息类型订阅此消息类型的观察者们。 并且在主题类Subject的成员方法addObserver中我们使用了一个中括号运算符[]重载的特性 如果当前容器中存有相应的msgid键的话就直接添加对应的值Obser 如果当前容器中没有相应的msgid键的话就直接添加该键并且添加一个默认的值。 运行结果 我们使用如下的代码 void main() {Subject subject;Observer* p1 new Observer1();Observer* p2 new Observer2();Observer* p3 new Observer3();subject.addObserver(p1, 1);subject.addObserver(p1, 2);subject.addObserver(p2, 2);subject.addObserver(p3, 1);subject.addObserver(p3, 3);int msgid 0;for (;;){cout 请输入消息id endl;cin msgid;if (msgid -1)break;subject.dispatch(msgid);//发起通知} } 运行结果如下
http://wiki.neutronadmin.com/news/246760/

相关文章:

  • 智联招聘网站怎么做微招聘信息东莞国药官网网上商城
  • 有哪些网站是可以做免费推广的页面布局标准格式
  • 有谁想做网站 优帮云做宠物商品的网站
  • 建设网站需要备案么小程序模板消息推送
  • 易语言跳到指定网站怎么做江西建设单位网站
  • 中英文网站开发费用最后的目的是什么
  • 网站生成静态重庆制片公司
  • 免费行情网站app下载大全层流病房建设单位网站
  • 网站排名优化外包微博个人网页设计模板
  • 微信商城和微网站建站哪家好 discuz
  • 广东网站备案进度查询成全视频在线看
  • 福田网站制作比较好的在网站图片源代码alt写入关键词后为什么不显示只显示title内容
  • 礼泉住房和城乡建设局网站科技公司网站首页
  • 专门做库存的网站广扬建设集团网站
  • wordpress表单提交的邮箱网站优化师负责干什么
  • 网站建设煊煊网安阳建设局网站
  • 网站怎么做才能赚钱微信公众帐号平台官网
  • 网站开发外包费用的会计分录阿里云网站域名证书
  • 网站功能需求说明做网页赚钱
  • 互联网app开发app优化建议
  • 做一网站要什么广州从化网站制作公司
  • 网站首页动画怎么做的没有域名怎么搭建网站
  • 相亲网站的女人 做直播的生活中实用的产品设计
  • 微网站怎么制作西安网站的设计说明
  • 唯尚广告联盟平台seo诊断报告怎么写
  • 做网站在哪里做比较好网站开发信息发布
  • 上海企业建站网站的意义做网站主页图片一般多少m
  • 网站开辟两学一做专栏做网站导航一般字号是多少
  • 中国建设培训网站查询系统青岛的seo服务公司
  • 大连建设执业资格注册中心网站2023年装修风格及颜色