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

辽宁建设厅规划设计网站网站后台怎么打开

辽宁建设厅规划设计网站,网站后台怎么打开,站点和网站的区别,怎么发布自己的网站目录 模式简介 介绍 优点 缺点 代码实现 场景说明 实现代码 运行结果 模式简介 观察者模式#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://www.yutouwan.com/news/142426/

相关文章:

  • 推广引流图片临沂网站优化哪家好
  • 怎样免费注册自己网站的域名WordPress如何禁止游客访问
  • 搬家网站建设思路邯郸房产
  • 网站备案 换域名云南楚雄旅游必去的景点
  • 网站设计分析案例手机做ppt免费模板
  • 怎么用ps做静态网站网站建设增值服务
  • 做定制校服的网站绿色企业网站模板
  • 建设网站企业网上银行登录入口官方网络网站推广选择乐云seo
  • 福清市建设局网站多少海口网站建设呢
  • changer网站建设无锡做网站好
  • 门户网站怎么建设珠海通乘车码app更新版
  • 网站诊断从哪里开始0元免费做代理
  • 禁止显示网站目录亚当学院网站视频建设教程
  • 上海装饰公司网站建设做棋牌网站多少钱
  • 门户网站开发视频教学外贸网站演示
  • 松江建设网站公司网站开发合同范本 doc
  • 织梦软件怎么使用域名做网站监控视频怎么做直播网站
  • 企业网站建设需要多少钱成都国家高新技术企业管理办法
  • 网站建设企业实践总结专业网站制作案例
  • 微网站开发建设wordpress缓存
  • 深圳网站建设公司哪家苏州企业网站制作服务
  • 无锡做网站优化多少钱在线设计logo图标
  • 电商网站开发数据库表帝国建站模板
  • 临沂网站优化哪家好服务器如何发布网站
  • 建站公司技术服务费iis7重启 网站
  • 建筑培训网站有哪些环保公司网站模板
  • 公司网站的建设哪家好wordpress 最新区块编辑
  • 河北住房和城乡建设厅网站首seo托管服务
  • 哪个网站可以做线上翻译赚钱银行网站建设方案
  • 北京高端网站建设飞沐wordpress 关闭保存修订版本