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

帝国cms是个人网站石家庄求职信息网

帝国cms是个人网站,石家庄求职信息网,开发一款小程序需要多少钱,批量做网站引流引言#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.w-s-a.com/news/615716/

相关文章:

  • 推广网站的方法有拍卖网站建设
  • 网站建设网站排名优化中国网站服务器哪个好
  • asp网站应用程序网站建设需要提供的资料
  • 网站开发与设计.net微信小程序设计制作
  • 怎样做网站排名优化展馆设计费取费标准一览表
  • 网站建设去哪可接单网站建设与设计大作业
  • 休闲咖啡厅网站开发目标韩国小清新网站模板
  • 做微景观的网站制作网页模板适应不同分辨率
  • 最简单的网站系统昨天军事新闻最新消息
  • 做ps网页设计的网站有哪些wordpress内容付费
  • 有没有免费注册域名的网站科技小制作 手工 简单
  • 网站支付端口win10优化大师怎么样
  • 怎么做云购网站吗网站流量监测
  • 网站被恶意刷流量可以翻外墙的浏览器
  • 网站做直链下载存储解决方案怎么把网站设置为主页面
  • 西安做网站招聘深圳网站见
  • 网站怎么做优化百度能搜索到wordpress 子分类
  • 六安网站建设培训制作网站需要多少时间
  • 电子商务专业网站建设什么软件可以做动画视频网站
  • wordpress 分享主题做网站优化有必要
  • ftp 网站管理电商网站设计图片
  • 惠州免费建站模板营销型旅游网站建设
  • 南宁cms建站wordpress 开启缩略图
  • 网站模板软件网站admin密码
  • 网站信息做参考文献射阳做企业网站多少钱
  • 网站外部优化的4大重点外贸站外推广
  • 宁波网站建设活动德州乐陵德州seo公司
  • 网站网址相对路径如何设置wordpress怎么加快网站打开速度
  • 有没有能帮人快速网站备案的机构网站建设与制作总结
  • 网站不用了怎么办苏州h5模板建站