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

app介绍网站模板免费下载网站建设 陕icp

app介绍网站模板免费下载,网站建设 陕icp,网站互动怎么做,平面设计的前景怎么样引言#xff1a;观察者模式——程序中的“通信兵” 在现代战争中#xff0c;通信是胜利的关键。信息力以网络、数据、算法、算力等为底层支撑#xff0c;在现代战争中不断推动感知、决策、指控等各环节产生量变与质变。在软件架构中#xff0c;观察者模式扮演着类似的角色…引言观察者模式——程序中的“通信兵” 在现代战争中通信是胜利的关键。信息力以网络、数据、算法、算力等为底层支撑在现代战争中不断推动感知、决策、指控等各环节产生量变与质变。在软件架构中观察者模式扮演着类似的角色它是确保信息在系统中高效、准确地流动的“通信兵”。 观察者模式确保了在软件系统中当一个对象的状态发生变化时所有依赖于这个状态的对象都能够及时得到通知。这种模式通过定义对象间的一对多依赖关系使得一个对象的改变能够自动传播到其他对象。 观察者模式的概念 观察者模式是一种行为设计模式它定义了对象间的一种一对多的依赖关系使得当一个对象的状态发生改变时所有依赖于它的对象都会得到通知并自动更新。这种模式非常适合于实现分布式事件处理系统如用户界面元素的响应、股票价格更新通知等。 为什么选择观察者模式 降低耦合度观察者模式通过定义对象间的依赖关系降低了组件之间的耦合度使得系统更加模块化。 提高系统的可扩展性当需要增加新的观察者或被观察对象时不需要修改现有的代码只需遵循观察者模式的规则即可。 增强系统的灵活性观察者模式允许对象在运行时动态地注册或注销观察者使得系统能够灵活地响应变化。 本文的目的 在本文中我们将深入探讨观察者模式的工作原理、实现方式以及如何在实际项目中应用它。 走近现实聊聊军事下的“观察者模式” 观察者模式的角色构成 朱日和军演是中国每年举行的一次大规模军事演习涉及多个部队和指挥中心。在这个例子中我们可以将观察者模式应用到演习的指挥系统中。 主题Subject朱日和军演总指挥中心 总指挥中心负责制定演习计划并维护一个观察者列表。 观察者Observer参演部队的指挥官或通信兵 参演部队的指挥官或通信兵希望在演习计划发生变化时能够收到通知。 具体主题ConcreteSubject具体的朱日和军演总指挥中心 具体的总指挥中心会在演习计划发生变化时通知所有观察者。 具体观察者ConcreteObserver具体的参演部队 具体的参演部队会在收到通知后根据新的演习计划调整行动。 观察者模式的工作流程 注册 各个参演部队向总指挥中心注册表示自己希望收到演习计划的更新。 计划变更 当总指挥中心制定了新的演习计划或现有计划发生变化时计划变更被触发。 通知 总指挥中心通知所有注册的参演部队告知他们演习计划已经更新。 更新 各个参演部队接收到通知后根据新的演习计划调整自己的行动。 观察者模式的实现流程 下面我将以朱日和军演的例子将演习计划的变更通知到每一个参演部队确保所有部队能够及时调整行动协同作战。 第一步新建一个主题接口主要定义了注册、移除和通知观察者的方法。这是所有具体指挥中心必须实现的接口。 // 主题接口军事指挥中心 public interface CommandCenter {// 注册观察者void registerObserver(Observer observer);// 移除观察者void removeObserver(Observer observer);// 通知所有注册的观察void notifyObservers(String exercisePlan); }第二步新建一个观察者接口其定义了一个更新方法用于接收主题的通知。这是所有具体观察者必须实现的接口。 // 观察者接收主题的通知 public interface Observer {void update(String message); }第三步创建具体主题类实现了 CommandCenter 接口负责管理观察者列表并在演习计划改变时通知所有观察者。 // 具体主题类朱日和指挥中心 public class ZhuRiHeCommandCenter implements CommandCenter {private ListObserver observers new ArrayList();Overridepublic void registerObserver(Observer observer) {observers.add(observer);}Overridepublic void removeObserver(Observer observer) {observers.remove(observer);}Overridepublic void notifyObservers(String exercisePlan) {observers.forEach(observer - observer.update(exercisePlan));}// 改变演习计划并通知观察者public void changeExercisePlan(String newPlan) {notifyObservers(newPlan);} }第四步新建了一个TroopCommander 类 实现了Observer 接口负责接收演习计划的更新并通知其下属的部队。 // 具体观察者团长 public class TroopCommander implements Observer {private String name;private ListTroop troops;public TroopCommander(String name) {this.name name;this.troops new ArrayList();}public void addTroop(Troop troop) {troops.add(troop);}Overridepublic void update(String exercisePlan) {System.out.println(name 收到指挥中心的命令 exercisePlan 。并通知全体部队开始执行计划);for (Troop troop : troops) {troop.executePlan(exercisePlan);}} }第五步再次创建一个观察者定义执行计划的方法用于执行具体的演习计划。 // 观察者执行具体的演习计划 public interface Troop {void executePlan(String plan); }第六步创建具体部队观察者实现了 Troop 接口负责执行具体的演习计划。 // 具体观察者部队 public class CampTroop implements Troop {private String name;public CampTroop(String name) {this.name name;}Overridepublic void executePlan(String plan) {System.out.println(name 收到执行计划 plan);} }第七步在客户端代码中使用观察者来执行朱日和军演指挥流程。 // 测试类 public class ZhuRiHeExerciseSystem {public static void main(String[] args) {ZhuRiHeCommandCenter commandCenter new ZhuRiHeCommandCenter();TroopCommander reedCommander new TroopCommander(红军);TroopCommander buleCommander new TroopCommander(蓝军);reedCommander.addTroop(new CampTroop(一营));reedCommander.addTroop(new CampTroop(二营));buleCommander.addTroop(new CampTroop(三营));buleCommander.addTroop(new CampTroop(四营));commandCenter.registerObserver(reedCommander);commandCenter.changeExercisePlan(执行方案A);commandCenter.removeObserver(reedCommander);commandCenter.registerObserver(buleCommander);commandCenter.changeExercisePlan(执行方案B);} }从结果上看利用观察者模式红蓝双方都准备接收到了来自指挥中心传达的命令。
http://www.zqtcl.cn/news/943423/

相关文章:

  • 什么软件可以发帖子做推广中山优化网站
  • 中山网站建设开发网络营销的基本功能
  • 温州平阳县网站建设兼职免费下载简历模板
  • 导购网站 转化率wordpress 拓展
  • 美文分享网站源码互联网网站建设
  • 做网站用php还是python建设网站价格
  • 平台网站怎么做诱导网站怎么做
  • 网站建设人员构成网址申请域名
  • 微网站建设找哪家公司好郑州一凡网站建设
  • 江阴网站制作公司泉州网站建设论坛
  • 最新章节 62.一起来做网站吧时钟插件+wordpress
  • 惠州市建设规划局网站网页设计实训报告word
  • 大众汽车网站建设鳌江网站建设
  • 佛山外贸网站建设公司网站与网页区别
  • HTML网站建设课程微商怎么做网站
  • 专业数据分析网站wordpress 很差
  • 请人做个网站多少钱google推广妙招
  • 郑州销售网站开一个设计公司
  • 建筑公司网站常用长尾词网页设计实训总结100字
  • 网站开发项目业务要求wordpress前台注册登陆
  • 上海人才网官网招聘人力资源专业wordpress seo title
  • 简单html网站网页设计培训学费多少
  • 麻城网站建设投标网招标网
  • 网站建设行业细分专业动漫如何制作
  • 做地方网站数据哪里来模板网站建设教程视频
  • 株洲建设网站制作网络怎么推广自己的产品
  • dtu网站开发赣县网站制作
  • 东莞旅游网站建设微网站怎么做
  • 网站怎么没有排名做义工旅行有哪些网站
  • 阳江房地产信息网官方网站创业网站开发要多少钱