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

做直播网站有哪些成都专业的网站建设制作公司哪家好

做直播网站有哪些,成都专业的网站建设制作公司哪家好,app开发公司怎么找到需要定制的客户,电子商务平台经营者有哪些在面向对象设计中,设计模式为我们提供了通用的解决方案,以应对常见的开发问题。观察者设计模式是其中非常经典且实用的一种模式,广泛应用于GUI系统、事件处理、消息推送等场景。今天,我们就深入探讨观察者模式的概念、结构和特点&…

在面向对象设计中,设计模式为我们提供了通用的解决方案,以应对常见的开发问题。观察者设计模式是其中非常经典且实用的一种模式,广泛应用于GUI系统、事件处理、消息推送等场景。今天,我们就深入探讨观察者模式的概念、结构和特点,以及如何在实际项目中使用它。
 

一、什么是观察者设计模式?

观察者设计模式(Observer Pattern),属于行为型模式。它定义了对象之间的一种一对多依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会自动收到通知并更新状态。简而言之,它是一种发布-订阅的机制,其中**主体(Subject)**发布通知,**观察者(Observer)**订阅并接收通知。

主要角色

观察者模式的核心是观察者被观察者。我们来看一下其主要角色:
 

  1. Subject(被观察者):被观察的对象,负责维护所有依赖于它的观察者,并在自身状态改变时通知它们。

    • 主要操作:addObserver(Observer)removeObserver(Observer)notifyObservers()

  2. Observer(观察者):接收通知的对象。当被观察者的状态发生变化时,观察者会被自动通知并执行更新逻辑。

    • 主要操作:update(),用于接收并处理通知。

  3. ConcreteSubject(具体的被观察者):实现了 Subject 接口,并持有观察者列表。当状态发生变化时,通知所有观察者。

  4. ConcreteObserver(具体的观察者):实现了 Observer 接口,并注册自己为被观察者的观察者。收到通知时,更新自身的状态。

二、观察者模式的结构与特点

1. 结构分析

观察者模式的结构非常简洁,主要由SubjectObserverConcreteSubjectConcreteObserver构成。

  • Subject 接口提供了注册、注销观察者和通知观察者的方法。

  • ConcreteSubject 实现了 Subject 接口,包含实际的状态数据并负责通知观察者。

  • Observer 接口定义了 update() 方法,供观察者实现。

  • ConcreteObserver 实现了 Observer 接口,接收通知并执行自己的更新逻辑。

2. 观察者模式的特点

  • 一对多依赖关系:一个被观察者可以同时通知多个观察者,适用于多个系统组件依赖同一数据源的场景。

  • 松耦合:观察者与被观察者之间仅通过接口进行交互,双方不知道彼此的具体实现,符合“开闭原则”,方便扩展。

  • 自动通知:一旦被观察者的状态变化,所有已注册的观察者会自动接收到通知并进行状态更新,无需额外的操作。

  • 动态订阅/退订:观察者可以在运行时注册或注销,灵活应对不同的业务需求。

三、观察者模式的应用场景

观察者模式广泛应用于以下几种场景:

  1. 事件处理系统:例如,在GUI框架中,当用户与界面进行交互时,界面元素(按钮、文本框等)作为观察者监听并响应事件的变化。

  2. 消息推送系统:例如,社交媒体平台的通知系统,当某个用户发布内容时,关注此用户的其他用户会收到通知。

  3. 实时数据更新系统:例如,股票交易平台,当某个股票价格发生变化时,所有订阅该股票的用户都会被自动通知。

  4. 日志系统:多个系统组件可以作为观察者订阅一个日志发布者,日志发布者在运行时生成日志并推送给各个观察者进行显示或存储。

四、代码示例:天气监测系统

让我们通过一个简单的天气监测系统来演示观察者模式的应用。

import java.util.ArrayList;
import java.util.List;// Observer 接口
interface Observer {void update(float temperature);
}// Subject 接口
interface Subject {void addObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers();
}// ConcreteSubject(具体的被观察者)
class WeatherStation implements Subject {private List<Observer> observers = new ArrayList<>();private float temperature;@Overridepublic void addObserver(Observer observer) {observers.add(observer);}@Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}@Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(temperature);}}public void setTemperature(float temperature) {this.temperature = temperature;notifyObservers();}
}// ConcreteObserver(具体的观察者)
class PhoneDisplay implements Observer {@Overridepublic void update(float temperature) {System.out.println("Phone display updated with temperature: " + temperature);}
}class TVDisplay implements Observer {@Overridepublic void update(float temperature) {System.out.println("TV display updated with temperature: " + temperature);}
}public class ObserverPatternDemo {public static void main(String[] args) {WeatherStation weatherStation = new WeatherStation();PhoneDisplay phoneDisplay = new PhoneDisplay();TVDisplay tvDisplay = new TVDisplay();weatherStation.addObserver(phoneDisplay);weatherStation.addObserver(tvDisplay);weatherStation.setTemperature(25.5f);weatherStation.setTemperature(30.0f);}
}

五、展示多个观察者的行为

class AlarmSystem implements Observer {@Overridepublic void update(float temperature) {if (temperature > 35.0) {System.out.println("Alarm: Temperature too high! Triggering alert...");} else {System.out.println("Alarm: Temperature is normal.");}}
}class WeatherApp implements Observer {@Overridepublic void update(float temperature) {System.out.println("Weather App: Showing the updated temperature: " + temperature);}
}

 修改

// 扩展观察者模式的演示
public class ObserverPatternDemo {public static void main(String[] args) {// 创建一个天气监测站(被观察者)WeatherStation weatherStation = new WeatherStation();// 创建多个观察者PhoneDisplay phoneDisplay = new PhoneDisplay();TVDisplay tvDisplay = new TVDisplay();AlarmSystem alarmSystem = new AlarmSystem();WeatherApp weatherApp = new WeatherApp();// 注册观察者weatherStation.addObserver(phoneDisplay);weatherStation.addObserver(tvDisplay);weatherStation.addObserver(alarmSystem);weatherStation.addObserver(weatherApp);// 设置温度,模拟状态变化并通知所有观察者weatherStation.setTemperature(30.0f); // 正常温度weatherStation.setTemperature(36.5f); // 高温,触发报警}
}

六、总结

通过这次代码扩展,我们可以清晰地看到观察者模式中的一对多依赖关系。在实际应用中,多个组件(观察者)可以依赖同一个数据源(被观察者),当数据源发生变化时,所有依赖于它的组件都会自动得到更新。这个特性非常适用于需要分发状态变化的系统,如 GUI 界面、事件驱动系统、实时数据更新等场景。

观察者模式的最大优点是实现了松耦合,即被观察者和观察者之间没有直接的依赖关系,便于扩展和维护。如果我们需要添加更多类型的观察者(例如,电子邮件通知、短信提醒等),只需实现 Observer 接口并将其添加到被观察者中即可,不会影响其他部分的代码。


文章转载自:

http://eBjP5DOS.ybgcn.cn
http://tn2tG18q.ybgcn.cn
http://wNlUnJEU.ybgcn.cn
http://qpsjAuun.ybgcn.cn
http://Z2feY7Ok.ybgcn.cn
http://bbuGGiDC.ybgcn.cn
http://oSZCCqkt.ybgcn.cn
http://HG1LDZr1.ybgcn.cn
http://1MPcusQv.ybgcn.cn
http://FXmo2fSO.ybgcn.cn
http://TKk8jaIZ.ybgcn.cn
http://lXUS1L6W.ybgcn.cn
http://6toXA2Dp.ybgcn.cn
http://O77RzvFI.ybgcn.cn
http://9oHAE5Os.ybgcn.cn
http://g78itz1K.ybgcn.cn
http://ToxgHdyT.ybgcn.cn
http://DYCl6VZJ.ybgcn.cn
http://ksUsWpiC.ybgcn.cn
http://vGsacdX8.ybgcn.cn
http://UIjAGDrX.ybgcn.cn
http://fJwpvdWH.ybgcn.cn
http://HjKuIbGs.ybgcn.cn
http://Wnp7d3e1.ybgcn.cn
http://FiK6th7E.ybgcn.cn
http://4GWRs7aO.ybgcn.cn
http://2IWc6emy.ybgcn.cn
http://WZ0elKtH.ybgcn.cn
http://7ziuhmTZ.ybgcn.cn
http://TIUWfmyr.ybgcn.cn
http://www.dtcms.com/wzjs/761065.html

相关文章:

  • 海拉尔建网站杭州响应式网站开发
  • 网站建设便捷山西省最新干部调整
  • 一级A做爰片秋欲浓网站wordpress二次开发手册
  • wordpress国内视频网站吗上海有哪些做网站的公司
  • 门户网站推广介绍方案网站主页布局
  • 重庆商城网站建设WordPress评论昵称显示错误
  • 制作网站 太原24小时永久有效在线观看
  • 做全国社保代理的网站可以注册公司的地址
  • 快速建站公司怎么样西安网站建设小程序开发
  • 网站开发有什么点子棋牌源码论坛
  • 怎么在阿里云服务器上建设网站返回json数据的网站
  • 图片演示dw做网站php网站开发案例教程
  • 网站底部怎么修改东莞网站平面设计
  • 织梦系统网站打开速度慢西安公众号开发
  • 电子商务企业网站制作中国建筑人才证书查询官网
  • 手机wap网站html源码wordpress 三款站群插件之比较
  • 国外个人网站域名注册辽宁省建设厅网站中级职称公示
  • 做自媒体可以参考的外国网站电商网站设计与制作论文
  • 网站接入支付宝需要网站备案吗多说与网站账号绑定
  • 常德外贸网站优化推广秦皇岛找一家能建网站的公司
  • 网站建设 ipc备案可以做数据图的的网站有哪些
  • wordpress 网站变慢电商分销主要做什么
  • 凡科建站是不是关闭企业网站企业信息平台查询
  • 免费建站的方法管理咨询公司收费
  • 购物优惠券网站怎么做wordpress 登录不上
  • 网站关键词优化效果郑州福千欣隆网站建设有限公司
  • 西安网站开发公司价格php商务网站开发
  • 龙口网站制作ui网页设计公司
  • 网站界面设计工具网站 个人 公司 区别是什么
  • 网站多快能收录seo海外推广是做什么的