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

建设网站公司哪家好南通医院网站建设

建设网站公司哪家好,南通医院网站建设,网站提交搜索引擎,免费图片设计观察者模式是一种行为型设计模式,用于定义对象间的一种一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式涉及以下几个角色: 主题(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.yayakq.cn/news/92250/

相关文章:

  • 建立营销型网站中国企业公示信息网官网
  • 已经备案的域名做电影网站虚拟机做局域网网站服务器配置
  • 网站开发设计技术路线包头 网站建设
  • 石家庄个人做网站自己做网站帮公司出认证证书违法吗
  • 产地证在什么网站做seo是什么平台
  • 重庆网站建设哪家做的好长沙官网优化推广
  • 设计网站思路如何写博瑞微传媒建站快车
  • 问答网站如何优化深圳市网站制作公司
  • 甘肃省建设局官方网站仿简书wordpress博客主题
  • 网站建设职员校园网站规划与建设心得
  • 无锡 网站建设公司网站建设管理要求
  • 西昌城乡建设网站做网站是用ps还是ai
  • pc网站做移动适配关键词首页排名代发
  • 做公司网站图片算是商用吗怎么做招聘网站的数据分析
  • 绵阳模板网站昆明建网站电话
  • 建设类招标代理公司网站做网站用什么字体
  • 南宁网站建设公司哪家好施工企业企业管理费
  • 电子商务网站建设需求说明书南昌网站建设技术托管
  • 建设银行信用卡网站显示余额中国新闻社是什么级别
  • 雄县没有做网站的公司html 购物网站
  • dede地方门户网站模板字体 安装到wordpress
  • 苏州h5网站建设如何自己做一个app软件
  • 网站标题作弊手机网站建设效果
  • 孝感网站开发培训机构ui设计师岗位职责
  • 个人备案网站 论坛杭州网站制作公司网站
  • 如何建设网站app怎么做下载类的网站
  • 自助建站门户网站帆软社区app
  • 厦门电信网站备案dedecms 营销网站模板
  • 小型电子商务网站开发上海十大保安公司排名
  • 台州品牌网站设计app在线生成网站