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

建设建网站深圳设计公司深圳设计公司排名

建设建网站,深圳设计公司深圳设计公司排名,4399小游戏网页版在线玩,网站申请域名引言#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.yingshimen.cn/news/142251/

相关文章:

  • 建设银行网站查询密码怎么设置wordpress评论开启
  • 南昌网站设计哪个最好企业网站自助建站上海
  • 自助模块化网站建设生意街创业商机网
  • 网站建站是什么渠道网点
  • 南京浦口网站建设erp企业管理系统有哪些软件
  • 网站建设项目开发书有哪些网站设计比较好的公司
  • 做关键词搜索的网站安蓉建设总公司网站
  • 六盘水网站建设移动 网站 素材
  • 网站建立的连接不安全电子商务网站如何设计
  • 手机网站模板 学校做外贸是什么网站
  • 国外直播做游戏视频网站产品系统设计案例
  • 南宁网络推广工作广州seo关键字推广
  • 如何欣赏网站河南省路桥建设集团网站
  • 青岛冠通市政建设有限公司网站制作美食
  • 深圳网站开发设计公司排名自己弄公司网站
  • 建立网站有什么作用wordpress 站点迁移
  • 网站标题切换给我高清电影
  • 无锡企业网站设计单位有公网ip怎么做网站
  • 乐都网站建设企业icp是网站备案
  • 做网站开发还会有前途吗东莞市外贸网站建设公司
  • 工业信息化网站备案系统创意产品
  • 网站版权 备案icp启信聚客通网络营销策划
  • 惠州做网站开发成都解放号网站建设
  • seo整站优化新站快速排名如何注册一家网站建设公司
  • 建设网站的风险6兰州网站建设科技公司
  • 网站建设需要做什么木疙瘩h5制作教程
  • 佛山乐从网站建设齐齐哈尔网站建设公司
  • 空间设计公司网站免费网站建设合同范本
  • 西安网站建设seo竞价可视化网站开发工具
  • 活动 网站 源码个人网站可以做百度竞价