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

自己有网站 做app上海软装设计公司排名

自己有网站 做app,上海软装设计公司排名,网页小游戏网址,网站商城的意义观察者模式#xff08;Observer Pattern#xff09;是一种行为设计模式#xff0c;它定义了对象之间的一对多依赖关系#xff0c;当一个对象的状态发生改变时#xff0c;所有依赖于它的对象都会得到通知并被自动更新。这种模式通常被用来实现事件处理系统、实时数据更新、…        观察者模式Observer Pattern是一种行为设计模式它定义了对象之间的一对多依赖关系当一个对象的状态发生改变时所有依赖于它的对象都会得到通知并被自动更新。这种模式通常被用来实现事件处理系统、实时数据更新、状态监控等多种场景。 关键组件 Subject主题/被观察者它是被观察的对象负责维护一个观察者列表并在状态发生改变时通知所有的观察者。Subject通常会提供注册attach、注销detach观察者以及通知notify观察者的方法。 Observer观察者它是观察主题状态变化的对象提供一个更新自己的方法通常称为update。当Subject状态变化时它会调用所有已注册的Observer的update方法。 工作流程 注册过程观察者向主题注册自己表明自己对主题状态变化感兴趣。状态改变当主题状态发生改变时它会自动通知所有已注册的观察者。更新操作每个观察者接收到通知后根据收到的信息执行相应的操作来更新自己的状态。 优点 松耦合主题和观察者之间仅通过接口关联降低了模块间的耦合度使得两者可以独立地变化。扩展性可以轻松地增加新的观察者而无需修改主题或其他现有的观察者代码。灵活性能够支持广播通信即一个主题状态的改变可以通知多个观察者。 实现示例Java 以下是使用Java实现观察者模式的一个简单示例。在这个例子中我们将模拟一个天气预报系统其中WeatherData充当被观察者Subject负责收集气象数据并通知观察者Observer——在这里是具体的显示设备如CurrentConditionsDisplay。 1. 创建观察者接口 首先定义一个观察者接口声明更新方法。 import java.util.EventObject;// 观察者接口 interface Observer {void update(EventObject event); } 2. 定义被观察者接口与具体被观察者 接下来定义被观察者接口包含注册、删除观察者以及通知观察者的方法。同时实现具体的被观察者类WeatherData。 import java.util.ArrayList; import java.util.List;// 被观察者接口 interface Observable {void addObserver(Observer o);void deleteObserver(Observer o);void notifyObservers(); }// 具体被观察者 - 天气数据 class WeatherData implements Observable {private ListObserver observers;private float temperature;private float humidity;private float pressure;public WeatherData() {this.observers new ArrayList();}public void measurementsChanged() {notifyObservers();}Overridepublic void addObserver(Observer o) {observers.add(o);}Overridepublic void deleteObserver(Observer o) {observers.remove(o);}Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(new WeatherEvent(this, temperature, humidity, pressure));}}// 其他方法略如setMeasurements等用于更新数据 } 3. 创建事件对象 定义一个事件对象用于传递给观察者。 // 事件对象 class WeatherEvent extends EventObject {private float temperature;private float humidity;private float pressure;public WeatherEvent(Object source, float temperature, float humidity, float pressure) {super(source);this.temperature temperature;this.humidity humidity;this.pressure pressure;}public float getTemperature() {return temperature;}public float getHumidity() {return humidity;}public float getPressure() {return pressure;} } 4. 实现具体观察者 定义具体的观察者类比如显示当前天气状况的显示器。 // 具体观察者 - 显示当前天气状况 class CurrentConditionsDisplay implements Observer {private float temperature;private float humidity;Overridepublic void update(EventObject event) {if (event instanceof WeatherEvent) {WeatherEvent weatherEvent (WeatherEvent) event;this.temperature weatherEvent.getTemperature();this.humidity weatherEvent.getHumidity();display();}}public void display() {System.out.println(Current conditions: temperature F degrees and humidity % humidity);} } 5. 客户端代码 最后客户端代码创建被观察者和观察者实例并模拟数据更新过程。 public class ObserverPatternDemo {public static void main(String[] args) {WeatherData weatherData new WeatherData();CurrentConditionsDisplay currentDisplay new CurrentConditionsDisplay();weatherData.addObserver(currentDisplay);// 模拟气象数据变化weatherData.setMeasurements(80, 65, 30.4f); // 假设这是更新数据的方法} } 请注意为了简洁起见示例中省略了某些方法的实现细节如setMeasurements方法实际应用中应确保在数据更新时调用measurementsChanged方法来通知观察者。
http://www.hkea.cn/news/14425561/

相关文章:

  • 怎么做app和网站购物车网站内页做排名
  • 网站支付宝怎么做织梦只显示网站首页
  • 创建网站需要多少资金免费算命免费 生辰八字
  • 做那个免费视频网站潍坊网站建设优化
  • 网站 建设 维护 公司西安网站设计开发
  • 网站2级目录怎么做的做网站如何把栏目放到首页
  • 安阳做网站的地方上海市建设执业注册中心网站
  • 手机创建个人网站 免费设计网页时有哪些配色方法
  • 超炫酷网站欣赏涞源县住房和城乡建设局网站
  • 站长之家排行榜北京住房与城乡建设网站
  • 类似酷家乐做庭院的网站项目负责人质量建设厅官方网站
  • html 图片展示网站ios 集成wordpress
  • vs做asp网站淘宝的电子商务网站的建设
  • 做网站后台应该谁来做石家庄网络推广优化
  • 山东高端网站建设wang莆田百度seo排名
  • 关于公司做网站供比价报告网站建设基础书本
  • 佛山招收网站设计免费开发平台网站
  • 网站建站哪家公司好一点什么是软件定制开发
  • 北京做网站建设公司wordpress代码学习
  • 一个虚拟空间可以放几个网站中国航天空间站最新消息
  • 盐城网站建设找哪家好WordPress下级
  • 西安优化seo班级优化大师官网登录
  • 西安大型网站开发大数据营销试卷
  • 南京网站建设要多少钱抖音电商
  • 湖北大网站建设免费搭建企业网站
  • 网站负责人核验现场拍摄照片电子件广州竞价外包
  • 上海网站建设官方网站2d游戏制作软件
  • seo优化工具使用教程东莞网站快速排名优化
  • 萍乡商城网站建设环保企业网站模板
  • 做网站每年需要多少维护费免费ai写作网站3000字