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

网站后台页面是什么医疗网站优化公司

网站后台页面是什么,医疗网站优化公司,大连信联科技做的网站怎么样,房子简装修效果图片观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象(称为"主题"或"可观察对象")的状态发生改变时,所有依赖它的对象(称为"观察者")都会…

观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象(称为"主题"或"可观察对象")的状态发生改变时,所有依赖它的对象(称为"观察者")都会自动收到通知并更新。

主要组成部分

  1. Subject (主题/可观察对象)
    • 维护一个观察者列表

    • 提供添加和删除观察者的方法

    • 提供通知观察者的方法

  2. Observer (观察者)
    • 定义一个更新接口,用于在主题状态改变时接收通知

  3. ConcreteSubject (具体主题)
    • 存储对观察者有意义的状态

    • 当状态改变时,向观察者发送通知

  4. ConcreteObserver (具体观察者)
    • 维护一个对具体主题对象的引用

    • 实现观察者更新接口,使自身状态与主题状态保持一致

  5. 代码
    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <memory>// 前向声明
    class Observer;// 主题接口
    class Subject {
    public:virtual ~Subject() = default;virtual void registerObserver(Observer* o) = 0;virtual void removeObserver(Observer* o) = 0;virtual void notifyObservers() = 0;
    };// 观察者接口
    class Observer {
    public:virtual ~Observer() = default;virtual void update(float temp, float humidity, float pressure) = 0;
    };// 具体主题 - 气象数据
    class WeatherData : public Subject {
    public:void registerObserver(Observer* o) override {observers.push_back(o);}void removeObserver(Observer* o) override {observers.erase(std::remove(observers.begin(), observers.end(), o),observers.end());}void notifyObservers() override {for (auto* observer : observers) {observer->update(temperature, humidity, pressure);}}void measurementsChanged() {notifyObservers();}void setMeasurements(float temp, float humidity, float pressure) {this->temperature = temp;this->humidity = humidity;this->pressure = pressure;measurementsChanged();}private:std::vector<Observer*> observers;float temperature = 0.0f;float humidity = 0.0f;float pressure = 0.0f;
    };// 具体观察者 - 当前状况显示
    class CurrentConditionsDisplay : public Observer {
    public:explicit CurrentConditionsDisplay(Subject* weatherData) : weatherData(weatherData) {weatherData->registerObserver(this);}~CurrentConditionsDisplay() {weatherData->removeObserver(this);}void update(float temp, float humidity, float pressure) override {this->temperature = temp;this->humidity = humidity;display();}void display() const {std::cout << "Current conditions: " << temperature << "°C and " << humidity << "% humidity\n";}private:Subject* weatherData;float temperature = 0.0f;float humidity = 0.0f;
    };// 使用示例
    int main() {WeatherData weatherData;CurrentConditionsDisplay currentDisplay(&weatherData);weatherData.setMeasurements(25, 65, 1013);weatherData.setMeasurements(26, 70, 1012);return 0;
    }
  6. uml结构图

 

优点

  1. 松耦合:主题和观察者之间是松耦合的,主题不需要知道观察者的具体类。

  2. 动态关系:可以在运行时动态添加或删除观察者。

  3. 广播通信:主题可以一次通知多个观察者。

缺点

  1. 意外更新:由于观察者不知道其他观察者的存在,可能导致意外的更新。

  2. 性能问题:如果有大量观察者,通知所有观察者可能会花费较长时间。

应用场景

  1. 当一个对象的改变需要同时改变其他对象,而不知道具体有多少对象需要改变时。

  2. 当一个对象需要通知其他对象,但又不希望与这些对象形成紧耦合时。

  3. GUI事件处理、发布-订阅系统、MVC架构等。

变体

  1. 推模型:主题将详细的变化数据推送给观察者(如上面的示例)。

  2. 拉模型:主题只通知观察者状态已改变,观察者根据需要从主题拉取数据。

观察者模式是许多软件系统中事件处理的基础,理解它对于设计灵活、可扩展的系统非常重要。

 

http://www.dtcms.com/wzjs/396825.html

相关文章:

  • 网站建设与开发试题热搜榜排名前十
  • wordpress 怎么修改福建seo顾问
  • 做网站设计的公司网络整合营销理论
  • 健身网站开发开题报告徐州seo外包平台
  • 备案需要网站建设方案书谷歌google
  • 舟山网站建设哪家好十大搜索引擎
  • 网站建设需要注意哪些事项青岛seo网站建设公司
  • 长沙市建站江门seo推广公司
  • wordpress网站维护页面模板企业品牌推广
  • 南宁哪里有网站建设培训班seo标题优化的方法
  • 响应式网页设计项目seo网络推广报价
  • 青海小学网站建设电商网课
  • app开发网站建设公司线上推广产品
  • 个人建设纪检网站谷歌广告代理
  • 针对人群不同 网站做细分网站快速优化排名方法
  • 做系统前怎么保存网站上的收藏2019网站seo
  • 建设网站的意义作用是什么意思市场调研报告1500字
  • 做书籍的网站种子搜索神器在线搜
  • wordpress 4.7 多站点成都网络营销推广
  • 企业文化墙内容设计seo网络营销的技术
  • 如何做弹幕视频网站网络推广员的工作内容和步骤
  • 武汉大型网站建设谷歌关键词搜索排名
  • 建设企业功能型网站百度seo文章
  • 无锡网站建设哪家好做一个app软件大概要多少钱
  • 做网站自己买域名现在推广一般都用什么软件
  • 网站内容全屏截屏怎么做优化营商环境条例全文
  • 北京网站设计联系电话百度网盘搜索引擎入口哪里
  • 58和百度哪个推广效果好廊坊seo排名
  • 武汉做网站公司hlbzxseo关键字优化
  • 双语网站建设定制开发山东seo网页优化外包