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

电影网站建设需求分析网页制作怎么添加视频

电影网站建设需求分析,网页制作怎么添加视频,家乡网络推广方案,大连能做网站的公司有观察者模式由来 观察者模式#xff08;Observer Pattern#xff09;是一种行为型设计模式#xff0c;它的起源可以追溯到20世纪90年代初#xff0c;由设计模式四人帮#xff08;Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides#xff09;在其著作《设计模…观察者模式由来 观察者模式Observer Pattern是一种行为型设计模式它的起源可以追溯到20世纪90年代初由设计模式四人帮Erich Gamma, Richard Helm, Ralph Johnson 和 John Vlissides在其著作《设计模式可复用面向对象软件的基础》中首次提出。观察者模式用于解决对象之间的一对多依赖关系当一个对象被观察者的状态发生改变时所有依赖于它的对象观察者都会得到通知并自动更新。 概念 被观察者Subject定义一个接口用于添加、删除和通知观察者。观察者Observer定义一个接口用于接收被观察者的通知并执行相应的操作。具体被观察者ConcreteSubject实现被观察者接口维护观察者列表并在状态改变时通知所有观察者。具体观察者ConcreteObserver实现观察者接口具体实现接收到通知后的操作。 实现原理 观察者模式的核心原理是通过将对象间的依赖关系从硬编码转移到外部使得一个对象被观察者可以在不通知其他对象的情况下更改其状态然后在适当的时候通知所有依赖于它的对象观察者。这种解耦的设计方式使得代码更加灵活易于扩展和维护。 我有一个朋友张三他总是关心天气情况每天会看天气预报在这个过程中天气预报被观察者和张三观察者之间就会存在一种依赖关系。当天气预报发生变化时张三需要得到通知并及时更新自己的信息。 定义角色 被观察者Subject天气预报。它包含了当前的天气状况以及未来一段时间内的天气预报信息。观察者Observer张三。他是一个依赖于天气预报信息的用户。 建立依赖关系 张三订阅了天气预报服务这样当他打开电视或查看手机时就能接收到最新的天气预报信息。 事件通知机制 天气预报服务会在天气状况发生变化时或者新的预报信息生成时触发通知机制。这个机制负责将最新的天气信息发送给所有订阅了服务的用户包括张三。 更新策略 张三在接收到天气预报信息后会根据信息的内容更新自己的认知比如决定是否要带伞、穿什么衣服等。 动态加入和退出 如果张三决定不再订阅天气预报服务他可以随时取消订阅。同样如果张三从一个城市搬到另一个城市他可以订阅新的城市的天气预报服务。 技术实现 首先我们定义一个Subject接口和一个Observer接口 // 被观察者 public interface Subject {void registerObserver(Observer observer);void removeObserver(Observer observer);void notifyObservers(); }// 观察者 public interface Observer {void update(String message); }然后我们创建一个WeatherForecast类作为被观察者实现Subject接口 import java.util.ArrayList; import java.util.List;public class WeatherForecast implements Subject {private ListObserver observers new ArrayList();private String message;public void setMessage(String message) {this.message message;notifyObservers();}Overridepublic void registerObserver(Observer observer) {observers.add(observer);}Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}Overridepublic void notifyObservers() {for (Observer observer : observers) {observer.update(message);}} }接下来我们创建一个WeatherWatcher类作为观察者实现Observer接口 public class WeatherWatcher implements Observer {private String name;public WeatherWatcher(String name) {this.name name;}Overridepublic void update(String message) {System.out.println(name received weather forecast: message);} }最后我们在主函数中创建一个WeatherForecast对象和两个WeatherWatcher对象并让它们订阅天气预报 public static void main(String[] args) {WeatherForecast weatherForecast new WeatherForecast();WeatherWatcher watcher1 new WeatherWatcher(张三);WeatherWatcher watcher2 new WeatherWatcher(李四);weatherForecast.registerObserver(watcher1);weatherForecast.registerObserver(watcher2);weatherForecast.setMessage(今天天气晴朗温度适中。);weatherForecast.setMessage(明天将会有大雨请携带雨具。); }运行这个程序你会看到张三和李四都收到了天气预报的通知。 Spring 实现 定义事件类首先我们需要定义一个事件类它将携带被观察者状态变化的信息。 package com.neo.design.observer;import org.springframework.context.ApplicationEvent;public class WeatherEvent extends ApplicationEvent {private String weatherInfo;public WeatherEvent(Object source, String weatherInfo) {super(source);this.weatherInfo weatherInfo;}public String getWeatherInfo() {return weatherInfo;} } 创建事件发布者接下来我们创建一个事件发布者它将负责发布天气变更事件。在这个例子中我们将使用Spring的ApplicationEventPublisher来发布事件。 import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component;Component public class WeatherEventPublisher {private final ApplicationEventPublisher publisher;public WeatherEventPublisher(ApplicationEventPublisher publisher) {this.publisher publisher;}public void publishWeatherChangeEvent(String message) {publisher.publishEvent(new WeatherChangeEvent(message));} }创建事件监听器然后我们创建一个事件监听器它将实现ApplicationListener接口并重写onApplicationEvent方法。在这个方法中我们将处理天气变更事件并通知相关的观察者。 package com.neo.design.observer;import org.springframework.context.ApplicationEventPublisher; import org.springframework.stereotype.Component;Component public class WeatherEventPublisher {private final ApplicationEventPublisher publisher;public WeatherEventPublisher(ApplicationEventPublisher publisher) {this.publisher publisher;}public void publishWeatherChangeEvent(String message) {publisher.publishEvent(new WeatherChangeEvent(message));} }创建用户服务我们还需要创建一个用户服务它将负责管理用户的订阅信息并在接收到天气变更事件时通知用户。 package com.neo.design.observer;import org.springframework.stereotype.Service;import java.util.ArrayList; import java.util.List;Service public class UserService {private final ListString subscribers new ArrayList();public void subscribe(String subscriber) {subscribers.add(subscriber);}public void notifySubscribers(String message) {for (String subscriber : subscribers) {System.out.println(subscriber received weather forecast: message);}} }创建控制器最后我们创建一个控制器它将接收用户订阅请求和天气变更请求并调用相应的服务来处理这些请求。 package com.neo.design.observer;import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController;RestController public class WeatherForecastController {Autowiredprivate UserService userService;Autowiredprivate WeatherEventPublisher publisher;PostMapping(/subscribe)public String subscribe(RequestParam(subscriber) String subscriber) {userService.subscribe(subscriber);return Subscriber added!;}PostMapping(/update-weather)public String updateWeather(RequestParam(message) String message) {publisher.publishWeatherChangeEvent(message);return Weather updated!;} }通过以上设计我们利用Spring Boot的事件机制和依赖注入特性实现了一个高效的观察者模式。 验证 新增一名观察者 设定一个被观察者所关注的消息。 执行功能返回测试结果如下 总结 观察者模式Observer Pattern在软件工程设计中扮演着重要角色观察者模式实现了发布者主题和订阅者观察者之间的松散耦合。发布者无需知道具体的订阅者是谁只需要维护一个订阅者列表并在状态变化时通知它们。这种解耦使得系统更具灵活性和可扩展性。通过观察者模式添加或移除订阅者非常容易不需要修改发布者的代码。只需实现观察者接口并注册或取消注册即可。这使得系统在需求变化或扩展时更易于维护。它适用于各种需要实时更新和异步处理的场景提升了系统的响应能力和用户体验是设计模式中一个非常实用且常用的模式。 ​ ​ ​
http://www.dnsts.com.cn/news/187186.html

相关文章:

  • 做网站3年个人可以注册网站吗
  • 网站使用教程企业网站大全
  • 响应式网站生成商城系统哪家的好
  • 网站建设需要什么呢网站建设优化服务信息
  • 庆阳工程建设网站网页设计模板大全
  • 壹财富 网站开发aliyun oss wordpress
  • 马鞍山建设集团有限公司网站怎么给网站创建二维码
  • 工程建设比选公告固价方式网站电子元器件外贸网站建设
  • aspnet东莞网站建设价格网站备案ip地址段
  • 怎么用video做网站开头用织梦怎么修改网站首页商品顺序
  • 做网站需要懂哪些技能服务器空间租赁
  • c 新手一个人做网站网站开发php和python
  • 班级网站建设开题报告电脑怎么做网站
  • 专做展厅设计网站成都企业做网站多少钱
  • 徐水区城市建设网站wordpress获取文章一个tag标签
  • 苏州网站建设系统电话wordpress 内容模板下载
  • 庄河建网站wordpress不升级
  • 建筑企业登录哪个网站湖州公司网站建设公司
  • 咸阳做网站xymokj企业网站注销流程
  • 做标书分享网站wordpress 开启缓存
  • 可以刮刮卡的网站全国企业信息系统网官网
  • 大学生课程设计网站手机p图软件
  • 中英文自助网站建设京津冀协同发展规划纲要
  • 企业网站 个人备案沈阳做网站优化的公司哪家好
  • 网站建设 app我做淘宝网站卖东西怎么激活
  • 常州城投建设招标网站展厅设计装饰公司
  • 网站推广计划书范文西安做网站哪家最便宜
  • 手机网站优化排名怎么做登陆网站显示域名解析错误怎么办
  • tag做的最好的网站网页设计难学吗
  • 无锡装饰网站建设wordpress 课程激活