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

做的网站没流量吗西安疫情最新数据消息5分钟前

做的网站没流量吗,西安疫情最新数据消息5分钟前,设计制作第一架中国飞机的是谁,mvc个人网站怎么做观察者模式是一种行为型设计模式,用于定义对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式涉及以下几个角色: 主题(Subject)&…

观察者模式是一种行为型设计模式,用于定义对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。

观察者模式涉及以下几个角色:

  1. 主题(Subject):也称为被观察者或可观察对象,它维护一系列依赖于它的观察者对象,并提供添加、删除和通知观察者的方法。
  2. 观察者(Observer):定义了一个更新接口,以便在主题状态发生改变时接收通知。
  3. 具体主题(Concrete Subject):实现了主题接口,负责维护观察者列表以及状态变化时通知观察者。
  4. 具体观察者(Concrete Observer):实现了观察者接口,在接收到主题通知时进行相应的更新操作。

观察者模式的核心思想是解耦主题和观察者,使得它们可以独立地变化。主题不需要知道观察者的具体类型和数量,只需要维护一个观察者列表,并在状态变化时通知这些观察者即可。这种松耦合的设计使得系统更加灵活和可扩展。

#include <iostream>
#include <string>
#include <memory>
#include <unordered_map>
#include <list>
using namespace std;/*
行为型模式:主要关注的是对象之间的通信。
观察者-监听者模式(发布-订阅模式)设计模式:主要关注的是对象的一对多的关系,也就是多个对象
都依赖一个对象,当该对象的状态发生改变时,其它对象都能够接收到相应的通知。一组数据(对象) -》通过这一组数据-》 曲线图(对象1)/柱状图(对象2)/圆饼图(对象3)
当数据对象改变时,对象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;default:break;}}
};// 第二个观察者实例
class Observer2 : public Observer
{
public:void handle(int msgid){switch (msgid){case 2:cout << "Observer2 recv 2 msg!" << endl;break;default:break;}}
};// 第三个观察者实例
class Observer3 : public Observer
{
public:void handle(int msgid){switch (msgid){case 1:cout << "Observer3 recv 1 msg!" << endl;break;case 2:cout << "Observer3 recv 2 msg!" << endl;break;case 3:cout << "Observer3 recv 3 msg!" << endl;break;default:break;}}
};class Subject // 主题抽象类
{
public:void addObserver(Observer* observer,int msgid){_subMap[msgid].push_back(observer);/*auto it = _subMap.find(msgid);if(it!=_subMap.end()){it->second.push_back(observer);}else{list<Observer*> li;li.push_back(observer);_subMap.insert({msgid,li});}*/}//主题检测发生改变,通知相应的观察者对象处理事件void dispatch(int msg){auto it = _subMap.find(msg);if(it!=_subMap.end()){for(Observer *obs : it->second){obs->handle(msg);}}}private:unordered_map<int,list<Observer*>> _subMap;
};int main()
{Subject sub;Observer *p1 = new Observer1();Observer *p2 = new Observer2();Observer *p3 = new Observer3();sub.addObserver(p1,1);sub.addObserver(p2,2);sub.addObserver(p3,1);sub.addObserver(p3,2);sub.addObserver(p3,3);int msgid = 0;for(;;){cout<<"输入消息id:";cin>>msgid;if(msgid==-1)break;sub.dispatch(msgid);}return 0;
}

http://www.tj-hxxt.cn/news/121587.html

相关文章:

  • zbolg 去掉文章页带网站标题营销软件培训
  • 什么是运营管理安卓手机优化
  • 网站服务器类型查询天津关键词优化网站
  • 大石桥做网站谷歌浏览器怎么下载
  • 建设企业网站企业适合小学生的新闻事件
  • ASP动态网站制作渠道推广费用咨询
  • 沧州网络推广seo网络优化专员
  • 小程序游戏排行榜2022百度seo搜索
  • 苏州市住建局官网seo短视频
  • 电商修图技巧快速优化网站排名软件
  • 怎么搜才能搜到网站东莞网站到首页排名
  • 福州市网站建设情感营销
  • 北京大学两学一做网站千牛怎么做免费推广引流
  • 产品网站建设框架网络营销策划的概念
  • 同学聚会怎么样做网站网站搭建关键词排名
  • 网站制作建设公司测试自己适不适合做销售
  • 成都网站设计创新互联长沙网站seo优化公司
  • 建设个网站从哪里盈利百度快照没有了用什么代替了
  • 网站建设实例pdf下载趣丁号友情链接
  • erp软件有哪些品牌天天seo伪原创工具
  • 做网站横幅的软件抖音seo代理
  • 微信公众号接口文档seo视频教程
  • 商城网站管理系统seo推广软件品牌
  • wordpress 网站建设网址查询入口
  • 销售一个产品的网站怎么做的武汉seo网站优化运营
  • 做网站前期创建文件夹品牌营销是什么
  • 东莞广告公司东莞网站建设平台推广网站
  • 快速做网站视频油烟机seo关键词
  • 国外做电子元器件在哪个网站庆云网站seo
  • 哪个网站做自媒体比较好长沙网站优化效果