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

什么网站做电子元器件电动汽车排名前十名

什么网站做电子元器件,电动汽车排名前十名,乐陵森木全屋定制怎么样,dede学校网站免费源码设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 主题对象(出版者)管理…

设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。

设计思想

主题对象(出版者)管理某些数据,当主题内的数据改变,就会通知观察者(订阅者)。

观察者模式定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。相比让多个对象控制同一份数据,可以得到更干净的OO设计。

业务场景

假定现在有一个气象站类,这个气象站类会不定时更新温度,湿度,气压的最新数据,要求你在这些数值变化时,立即通知一些气象局进行展示,而他们得到的数据是一样的,但是采用的展示手段可能是不一样的,比如有的采用图示,有的采用文字,有的采用语音播报等,给出设计代码。

代码案例

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;// 观察者抽象类
class Observer
{
public:virtual void update(const float tmp, const float hum, const float pre) = 0;virtual ~Observer() {}
};// 展示抽象类
class Display
{
public:virtual void display() const = 0;virtual ~Display() {}
};// 主题抽象类
class Subject
{
public:virtual void registerObserver(Observer* b) = 0;virtual void removeObserver(Observer* b)   = 0;virtual void notifyObserver() const        = 0;virtual ~Subject() {}
};class WeatherData : public Subject
{
private:std::vector<Observer*> observers;float                  temperature = 0;float                  humidity    = 0;float                  pressure    = 0;public:WeatherData() : Subject() {}void registerObserver(Observer* b){observers.push_back(b);}void removeObserver(Observer* ob){auto it = find(observers.begin(), observers.end(), ob);if (it != observers.end()){observers.erase(it);}}// 通知观察者,使得所有观察者更新信息。void notifyObserver() const{for (auto& it : observers){it->update(temperature, humidity, pressure);}}void measurementsChanged(){notifyObserver();}// 设置气象站天气信息并通知观察者。void setMeasurements(const float tmp, const float hum, const float pre){temperature = tmp;humidity    = hum;pressure    = pre;measurementsChanged();}~WeatherData(){for (auto& each : observers){delete each;each = nullptr;}}
};class CurrentConditionsDisplay : public Observer, public Display
{
private:float    temperature = 0;float    humidity    = 0;Subject* weatherData = nullptr;public:// 初始化信息板,并在气象站对其登记。CurrentConditionsDisplay(Subject* wd) : Observer(), Display(){weatherData = wd;weatherData->registerObserver(this);}// 更新天气信息并展示。void update(const float tmp, const float hum, const float pre){temperature = tmp;humidity    = hum;display();}void display() const{cout << "气象局1: 当前温度:" << temperature << ", 当前湿度:" << humidity << endl;}~CurrentConditionsDisplay(){if (weatherData){delete weatherData;weatherData = nullptr;}}
};class CurrentConditionsDisplay2 : public Observer, public Display
{
private:float    temperature = 0;float    humidity    = 0;Subject* weatherData = nullptr;public:// 初始化信息板,并在气象站对其登记。CurrentConditionsDisplay2(Subject* wd) : Observer(), Display(){weatherData = wd;weatherData->registerObserver(this);}// 更新天气信息并展示。void update(const float tmp, const float hum, const float pre){temperature = tmp;humidity    = hum;display();}void display() const{cout << "气象局2: 当前温度:" << temperature << ", 当前湿度:" << humidity << endl;}~CurrentConditionsDisplay2(){if (weatherData){delete weatherData;weatherData = nullptr;}}
};int main()
{WeatherData*               wd  = new WeatherData();CurrentConditionsDisplay*  cd  = new CurrentConditionsDisplay(wd);CurrentConditionsDisplay2* cd2 = new CurrentConditionsDisplay2(wd);// wd修改天气信息 并通知展示板wd->setMeasurements(80, 65, 30.4f);wd->setMeasurements(60, 35, 32.1f);wd->removeObserver(cd);cout << "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~" << endl;wd->setMeasurements(60, 35, 31.1f);return 0;
}
http://www.yayakq.cn/news/881364/

相关文章:

  • 莱芜高端网站建设价格做cpc不做网站可以吗
  • 网站设计怎么收费安徽网站建设推广
  • 公司网站建设计入什么科目艺术作品欣赏网站
  • 网页设计与网站建设课程报告酒店要做关于网站ppt怎么做
  • seo整站优化一年价格多少手机图片网站 模版
  • 企业网站备案 过户网站建设目录结构
  • 网站运营怎么做百度域名服务器
  • 临沂品牌网站建设公司wordpress答题跳转
  • 做网站除了域名还要买什么网站模板外包
  • 网站建设的创新之处房屋装修全包清单
  • 多语言社交网站开发企业网站建设策划书 前言
  • 和君网站建设工业品电商平台排行榜
  • 怎样做站长建网站建一个自己的网站有什么用
  • 微信企业邮箱重庆seo小潘大神
  • 天津网站制作的公司哪家好企业展厅设计专业的公司
  • 乐平市建设局网站淘宝关键词搜索量排名
  • 国外工业产品设计网站中国建设银行个人卡信息网站
  • 禅城网站建设企业网站建设企业服务
  • 重庆招标建设信息网站企业官网制作报价
  • 制作微信的网站有哪些frontpage官方下载
  • 泰安选择企业建站公司开通微网站
  • 苏州网站开发公司兴田德润放心wordpress jekyll
  • php网站开发参考文献西安网站建设公司找哪家
  • 网站开发绩效考核与薪酬男女做那个能看的视频网站
  • 易语言网站批量注册怎么做wordpress 不同文章不同模板
  • 柳州建站中山模板网站建设
  • 网投怎么做网站wordpress更新版本
  • 两学一做 山西答题网站网页设计主题参考
  • 深圳做营销网站手机网页设计用什么软件
  • 饥荒网站这么做最简约的网站