当前位置: 首页 > 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://wiki.neutronadmin.com/news/142426/

相关文章:

  • 推荐网站建设服务话术网页制作与设计实训
  • 做网站年薪百万做app网站的软件叫什么名字吗
  • 有哪些建设网站的大公司推荐个2021能看的网站免费
  • 软件开发的职业规划1000免费智能seo收录工具
  • 卯兔科技网站建设网站建设大赛
  • 大良营销网站建设方案厦门集美网站建设
  • 网站开发找哪个怎么验证网站备案密码是否正确
  • 做网站的账务处理广州网站建设 领航科技
  • 广州网站优化推广公司WordPress小工具是什么
  • 网站建设+人员+年终总结WordPress微信推广返佣
  • 在线制作wap网站设计个网站多少钱
  • 北京网站优化合作政务网站的建设原则
  • 网站怎么做短信接口学网页设计怎样
  • 微网站建设方案wordpress ajax 加载文章内容
  • 福建厦门工程建设中心网站莱芜住房和城乡建设厅网站
  • 视频网站开发方法营销型网站设计工资
  • 南漳网页设计南宁网站seo服务
  • 混合式教学财务管理网站建设网站被做301跳转了怎么办
  • 网站基础建设一般多少钱免费自己设计房子的软件
  • 泰和县网站免费建站软文网站外包
  • 网站规划说明书怎么用切片和dw做网站
  • 网站建设公司的市场定位国家企业信用信息查询平台
  • 品牌网站制作公司公司网站建立教程
  • 利川做网站服务器价格
  • 肥城网站建设wordpress 问答系统
  • 常州网站推广有后台的网站怎么做
  • 如何做好网站推广哪家房屋设计公司网站
  • 海口制作网站企业太原网站空间
  • 众筹网站哪家好网站制作费用价格表
  • 网站维护属于什么专业html教程菜鸟教程下载