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

免费h5模板网站模板虚拟技术对网站建设维护的影响

免费h5模板网站模板,虚拟技术对网站建设维护的影响,帮人家做网站维护,昆山外贸公司网站建设流程文章目录 观察者模式#xff08;Observer Pattern#xff09;概述观察者模式UML图作用#xff1a;实现对象间的解耦支持一对多的依赖关系易于维护和扩展 观察者模式的结构抽象主题#xff08;Subject#xff09;#xff1a;具体主题#xff08;Concrete Subject#xf… 文章目录 观察者模式Observer Pattern概述观察者模式UML图作用实现对象间的解耦支持一对多的依赖关系易于维护和扩展 观察者模式的结构抽象主题Subject具体主题Concrete Subject抽象观察者Observer具体观察者Concrete Observer C 代码示例1C代码示例2 观察者模式Observer Pattern概述 定义 观察者模式又被称作发布 - 订阅模式它是一种行为型设计模式。在这种模式中存在一个被观察的对象主题Subject以及多个对该主题状态变化感兴趣的观察者Observer对象。当主题的状态发生改变时它会主动通知所有已注册的观察者观察者们可以根据收到的通知做出相应的响应从而实现对象之间的一种松耦合的交互关系。 观察者模式定义了一种一对多的依赖关系让多个观察者对象同时监听同一主题对象当这个主题对象发生变化时能够通知到所有观察者使他们能够自动更新自己 观察者模式UML图 作用 实现对象间的解耦 主题对象和观察者对象之间相互依赖的关系比较松散主题只负责在自身状态改变时通知观察者而不用关心观察者具体会做什么操作观察者也只需要关注主题的通知不用了解主题内部状态变化的具体实现细节这样使得它们可以独立地进行修改和扩展降低了代码的耦合度。 支持一对多的依赖关系 一个主题可以有多个观察者关注它的状态变化当主题状态更新时能同时通知到所有相关的观察者方便实现一些需要多方响应的业务场景比如在一个股票交易系统中当某支股票价格变化主题状态改变多个关注该股票的股民客户端观察者都能及时收到通知并做出相应决策。 易于维护和扩展 如果要新增观察者或者改变主题的通知逻辑等相对来说比较容易实现对其他部分的代码影响较小能够灵活应对业务需求的变化。 观察者模式的结构 抽象主题Subject 它定义了注册、移除观察者以及通知观察者等方法的接口维护了一个观察者列表用于记录所有注册的观察者对象当自身状态改变时通过调用通知方法来告知所有观察者。 具体主题Concrete Subject 实现了抽象主题中定义的接口具体管理观察者的注册和移除操作并且在自身内部状态发生变化时按照约定的通知机制去通知所有已注册的观察者。它持有自身实际的业务数据和状态信息。 抽象观察者Observer 定义了一个更新update方法的接口当接收到主题的通知时具体的观察者实现类会通过这个方法来执行相应的业务逻辑以对主题状态变化做出响应。 具体观察者Concrete Observer 实现了抽象观察者中定义的更新方法在该方法中编写具体的业务逻辑明确在收到主题通知后自身要进行的操作比如更新界面显示、进行数据记录等操作。 C 代码示例1 以下是一个简单的基于观察者模式的示例代码模拟一个气象站发布天气数据多个客户端观察者接收并处理天气信息的场景 #include iostream #include vector// 抽象观察者 class Observer { public:virtual void update(float temperature, float humidity, float pressure) 0; };// 抽象主题 class Subject { public:virtual void registerObserver(Observer* o) 0;virtual void removeObserver(Observer* o) 0;virtual void notifyObservers() 0; };// 具体主题气象站数据 class WeatherData : public Subject { private:float temperature;float humidity;float pressure;std::vectorObserver* observers; public:void registerObserver(Observer* o) {observers.push_back(o);}void removeObserver(Observer* o){for (std::vectorObserver*::iterator it observers.begin(); it! observers.end(); it){if (*it o){observers.erase(it);break;}}}void notifyObservers(){for (std::vectorObserver*::iterator it observers.begin(); it! observers.end(); it){(*it)-update(temperature, humidity, pressure);}}void setMeasurements(float temperature, float humidity, float pressure){this-temperature temperature;this-humidity humidity;this-pressure pressure;notifyObservers();} };// 具体观察者例如手机客户端显示天气数据 class MobileApp : public Observer { private:float temperature;float humidity;float pressure; public:void update(float temperature, float humidity, float pressure){this-temperature temperature;this-humidity humidity;this-pressure pressure;display();}void display(){std::cout Mobile App: Temperature temperature °C, Humidity humidity %, Pressure pressure hPa std::endl;} };// 另一个具体观察者网页端显示天气数据 class WebPage : public Observer { private:float temperature;float humidity;float pressure; public:void update(float temperature, float humidity, float pressure){this-temperature temperature;this-humidity humidity;this-pressure pressure;showData();}void showData() {std::cout Web Page: Temperature temperature °C, Humidity humidity %, Pressure pressure hPa std::endl;} };int main() {WeatherData weatherData;MobileApp mobileApp;WebPage webPage;weatherData.registerObserver(mobileApp);weatherData.registerObserver(webPage);weatherData.setMeasurements(25.0, 60.0, 1013.0);weatherData.removeObserver(mobileApp);weatherData.setMeasurements(26.0, 55.0, 1015.0);return 0; }在上述代码中 Observer是抽象观察者规定了update方法接口用于接收主题状态变化的通知并处理。 Subject是抽象主题定义了注册、移除观察者以及通知观察者等相关接口。 WeatherData作为具体主题管理着观察者列表当调用setMeasurements方法改变内部天气数据状态时会通过notifyObservers方法通知所有已注册的观察者。 MobileApp和WebPage是具体观察者实现了update方法在接收到气象站主题的通知后各自通过不同的显示方法display和showData来展示更新后的天气数据。在main函数中演示了观察者的注册、主题状态更新通知以及观察者移除等操作流程体现了观察者模式的基本应用场景。 C代码示例2 //观察者 #includeiostream #includelist using namespace std; //观察者模式Observer又叫发布-订阅模式Publish/Subscribe定义对象间一种一对多的依赖关系 //使得每当一个对象改变状态则所有依赖于它的对象都会得到通知并自动更新class USER { public:virtual void Update(){} }; class USERLI:public USER {void Update(){cout我是小李我去看华为博客了endl;} };class USERWANG:public USER {void Update(){cout我是小王我去看华为博客了endl;} };class BLOG { public:listUSER* m_list;//保存观察者就是关注我博客的用户//记录观察者void AddUser(USER *p_user){m_list.push_back(p_user);}void ReMoveUser(USER *p_user){m_list.remove(p_user);}//开始通知所有我的观察者void NotiFy(){listUSER*::iterator itr m_list.begin();for(;itr!m_list.end();itr){(*itr)-Update();}} };//华为博客 class BLOG_HUAWEI:public BLOG { public:void WriteBlogOk(){NotiFy();} };int main() {BLOG_HUAWEI huawei;USERLI *xiaoli new USERLI();USERWANG *xiaowang new USERWANG();huawei.AddUser(xiaowang);huawei.AddUser(xiaoli);huawei.WriteBlogOk();//这个时间点触发通知return 0; }
http://www.hkea.cn/news/14570676/

相关文章:

  • 让人做网站需要注意哪些问题wordpress基础主题站
  • WordPress添加live2dseo排名谁教的好
  • wordpress文章调用seo网站诊断书
  • 无棣做网站网络规划设计师学历低
  • 云南公路建设市场网站贵州省建设监理协会网站
  • 网站开发难度和小程序开发难度wordpress数据连接失败1223
  • 三亚做网站那家效果好portfolio wordpress
  • 贾汪微网站开发湖南网站营销seo多少费用
  • 互站网源码网站做一个营销型网站需要多少钱
  • 怎么做电影网站服务器外包公司的招聘专员好干吗
  • 网站建设人员管理制度甘肃出现12000多人阳性
  • 广州外贸网站效果免费在线设计平台
  • 科技网站建设+长沙个人在线网站推广
  • php开源网站 网上商城中国空间站有几个舱段
  • 做网站网页的工作怎么样聚享游网站如何做推广
  • 学做窗帘的网站软件培训班
  • 自己做的网站可以买东西吗东莞哪家公司做网站好
  • pc端网站模型建设工具ppt设计教程网
  • 中山网站建设模板招商帮忙建站的公司
  • 提供网站建设方案服务网站h标签
  • 企业培训考试系统官网成都网站制作实力乐云seo
  • 做电商网站要多少钱义乌的论坛网站建设
  • 网站建设优化文章网站建设论文读书笔记
  • 网站建设需要知识徐州网站运营
  • 网站除了做流量还需要什么网页游戏服务端
  • 中国勘察设计行业信息化建设网站网站页面是自己做还是使用模板
  • 美工外包网站活动网站怎么建设
  • 网站推广方法主要有什么现在还做响应式网站吗
  • 青山网站建设零基础搭建网站
  • vivo官方网站进入荣昌集团网站建设