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

嘉兴备案网站牛排seo

嘉兴备案网站,牛排seo,北京b2b网站开发,海外购物网站上填手机号码怎么做文章目录 行为型模式:观察者模式 行为型模式:观察者模式 观察者模式定义了一种一对多的依赖关系:它让一个主题(被观察者)对象关联多个观察者对象,并且当主题对象的状态发生变化时,它会主动通知…

文章目录

  • 行为型模式:观察者模式

行为型模式:观察者模式

观察者模式定义了一种一对多的依赖关系:它让一个主题(被观察者)对象关联多个观察者对象,并且当主题对象的状态发生变化时,它会主动通知这些观察者对象,使它们能够自动更新自己或执行相应的响应操作。

以一个设备的温度显示系统为例,在这个示例中,温度检测仪是被观察者,当设备温度发生变化时,它会通知所有的显示器更新温度信息。

#include <iostream>
#include <vector>
#include <string>
#include <algorithm> // 观察者接口
class IObserver {
public:virtual void update(float temperature) = 0;virtual ~IObserver() {}
};// 主题接口(Subject)
class ISubject {
public:virtual void registerObserver(IObserver* observer) = 0;virtual void removeObserver(IObserver* observer) = 0;virtual void notifyObservers() = 0;virtual ~ISubject() {}
};// 被观察者类:设备温度检测仪
class DeviceTemperatureMonitor : public ISubject {
private:std::vector<IObserver*> observers;float temperature;public:// 注册观察者void registerObserver(IObserver* observer) override {observers.push_back(observer);}// 移除观察者void removeObserver(IObserver* observer) override {// std::remove将所有与指定值observer相等的元素移动到容器的末尾,并返回指向第一个不需要保留的元素的迭代器observers.erase(std::remove(observers.begin(), observers.end(), observer), observers.end());}// 通知所有观察者void notifyObservers() override {for (IObserver* observer : observers) {observer->update(temperature);}}// 设置温度状态并通知所有观察者void setTemperature(float temp) {temperature = temp;notifyObservers();}
};// 观察者类:手机显示器
class PhoneDisplay : public IObserver {
private:std::string deviceName;public:PhoneDisplay(const std::string& name) : deviceName(name) {}void update(float temperature) override {std::cout << "Phone Display (" << deviceName << ") - Device Temperature: " << temperature << "°C\n";}
};// 观察者类:窗口显示器
class WindowDisplay : public IObserver {
private:std::string location;public:WindowDisplay(const std::string& loc) : location(loc) {}void update(float temperature) override {std::cout << "Window Display at " << location << " - Device Temperature: " << temperature << "°C\n";}
};int main() {// 创建被观察者对象(设备温度检测仪)DeviceTemperatureMonitor tempMonitor;// 创建观察者对象(显示设备)PhoneDisplay phoneDisplay1("iPhone");PhoneDisplay phoneDisplay2("Samsung");WindowDisplay windowDisplay("Office");// 注册观察者tempMonitor.registerObserver(&phoneDisplay1);tempMonitor.registerObserver(&phoneDisplay2);tempMonitor.registerObserver(&windowDisplay);// 模拟温度数据更新std::cout << "Temperature Update 1:\n";tempMonitor.setTemperature(75.0f);std::cout << "\nTemperature Update 2:\n";tempMonitor.setTemperature(80.0f);// 移除一个观察者tempMonitor.removeObserver(&phoneDisplay2);std::cout << "\nTemperature Update 3 (After removing Samsung Phone Display):\n";tempMonitor.setTemperature(85.0f);return 0;
}
Temperature Update 1:
Phone Display (iPhone) - Device Temperature: 75°C
Phone Display (Samsung) - Device Temperature: 75°C
Window Display at Office - Device Temperature: 75°CTemperature Update 2:
Phone Display (iPhone) - Device Temperature: 80°C
Phone Display (Samsung) - Device Temperature: 80°C
Window Display at Office - Device Temperature: 80°CTemperature Update 3 (After removing Samsung Phone Display):
Phone Display (iPhone) - Device Temperature: 85°C
Window Display at Office - Device Temperature: 85°C
http://www.rdtb.cn/news/14166.html

相关文章:

  • 网站的字体投广告哪个平台好
  • 哪个网站做新加坡劳务比较好的北京网站seo设计
  • 做赌石网站客服的经验网站优化排名操作
  • 新手做网页做那个网站简单培训机构需要什么资质
  • 关于网站制作报价windows优化大师官方
  • 百度快照比网站上线时间早企业百度推广怎么收费
  • 东莞长安网站设计武汉seo网站优化排名
  • 网站建设 面试题成都网站seo设计
  • 重庆茶叶网站建设线上营销策划方案
  • 软件开发网站建设google广告投放
  • 郑州建站优化写软文赚钱的平台都有哪些
  • 先做个在线电影网站该怎么做免费二级域名分发
  • 域名 网址 网站名称seo是什么软件
  • 保山市建设局网站登录东莞营销网站建设推广
  • 怎么做自己的公司网站放在百度长沙专业网站制作
  • 网站开发招聘要求群发软件
  • 有哪些网站是做分期付款的深圳百度推广客服
  • 疫情防控最新动态长沙网站优化对策
  • 时时彩网站代理怎么做?网络服务器配置与管理
  • wordpress是怎么添加登录的外贸seo推广招聘
  • 局域网内部网站建设app下载搜索引擎优化的定义
  • nofollow标签对网站收录的影响seo网站优化课程
  • 标书制作图片关键词排名优化价格
  • 开封网站设计价格百度网页版登录
  • 有名的网站制作电话seo编辑培训
  • 快速免费做网站手机系统优化软件哪个好
  • 和硕网站建设百度校招
  • 龙华做手机网站合肥seo优化排名公司
  • 哪个网站跨境电商做的最好在线识别图片百度识图
  • 上海网站推广企业最近的头条新闻