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

多模室内设计网站网站为什么没有排名了

多模室内设计网站,网站为什么没有排名了,制作自己网站有什么软件,河南省濮阳市建设局网站一、什么是观察者模式 说起观察者模式#xff0c;不得不说一位观察者模式的高级应用者#xff0c;朱元璋。不知道大家有没有看过胡军演的电视剧《朱元璋》。这部剧背景是元朝末年#xff0c;天下大乱#xff0c;朱元璋自幼父母双亡#xff0c;沦为乞丐#xff0c;后遁入空…一、什么是观察者模式 说起观察者模式不得不说一位观察者模式的高级应用者朱元璋。不知道大家有没有看过胡军演的电视剧《朱元璋》。这部剧背景是元朝末年天下大乱朱元璋自幼父母双亡沦为乞丐后遁入空门最终加入义军南征北战一步步登上历史舞台。剧中对朱元璋的刻画非常细腻展现了他从底层一步步走向权力巅峰的过程。 在剧中朱元璋为了巩固皇权设立了锦衣卫。这一情节反映了朱元璋对权力的绝对掌控和对潜在威胁的高度警惕。其中有一个电影情结让我记忆深刻 监视闲赋在家的刘伯温 -------情节还原 刘伯温罢官回乡朱元璋在经历了杨宪事件后变得更加多疑开始怀疑刘伯温及其他官员。为了加强对官员的监控朱元璋密令二虎组建了一支秘密队伍命名为“锦衣卫”专门监视所有皇孙臣子。刘伯温因与朱元璋政见不合被朱元璋拒见并逐渐被孤立。刘伯温意识到朱元璋可能随时会治他的罪于是提前写好了遗嘱。 归乡途中被监视刘伯温在归乡途中被锦衣卫检校吴风半路拦截奉命护送他回青田老家。刘伯温这才断定朱元璋可能要对他不利。在护送过程中吴风等人虽然表面上照顾刘伯温父子的起居但实际上一直在监视他们的行动和对话。刘伯温等待着吴风的诛杀但直到抵达青田老家吴风也没有动手这让刘伯温感到非常诧异。 后续发展朱元璋不断赏赐刘伯温试图通过这种方式让刘伯温回京。刘伯温最终决定回京但吴风再次出现奉命护送他返回京城。 这一情节生动地体现了观察者模式的核心逻辑通过“观察者”锦衣卫监视“被观察对象”刘伯温并将情报汇报给“主题”朱元璋。这种模式不仅巩固了朱元璋的皇权还通过动态监控和及时反应确保了明朝初年的政治稳定。基于上面的例子我们来解释一下什么是观察者模式观察者模式是一种行为型设计模式它通过定义对象之间的依赖关系使得当一个对象主题的状态发生变化时所有依赖于它的对象观察者都会自动得到通知并更新。这种模式非常适合用于“一对多”的依赖关系其中一个对象的状态变化需要通知多个其他对象。 二、为什么用观察者模式 通过这个例子来说明一下为什么要使用观察者模式呢朱元璋为啥使用锦衣卫 解耦合观察者模式使得主题和被观察对象之间松耦合主题不需要直接与被观察对象互动而是通过观察者获取信息。朱元璋主题不需要直接与刘伯温被观察对象互动而是通过锦衣卫观察者来获取信息。这种间接的监控方式使得朱元璋和刘伯温之间保持了松耦合关系。朱元璋不需要了解刘伯温的具体行动细节只需要通过锦衣卫获取关键信息从而减少了直接干预带来的风险。 动态监控观察者模式支持动态监控主题可以实时获取被观察对象的状态变化并及时做出反应。朱元璋需要实时掌握刘伯温的动态以便在必要时采取行动。通过锦衣卫的监视朱元璋可以在刘伯温有任何异常行为时迅速做出反应确保皇权的稳固。 集中管理观察者模式通过统一的接口管理多个观察者使得主题能够集中管理所有观察者的行为。这提高了系统的整体协调性和一致性。朱元璋通过锦衣卫统一管理对刘伯温的监视确保所有信息都能集中汇报到他这里。这种集中管理的方式使得朱元璋能够全面掌握局势避免信息碎片化从而更好地做出决策。 扩展性观察者模式允许动态地添加或删除观察者而不需要修改主题的代码。这使得系统在运行时可以根据需要灵活调整监控范围和方式。朱元璋还可以添加监控对象胡惟庸后续剧情。 广播通信观察者模式支持一对多的广播通信机制当主题的状态发生变化时所有观察者都会收到通知。这使得系统能够高效地传递信息减少重复劳动。指令统一由朱元璋下达广播给锦衣卫。 三、观察者模式示例 3.1 锦衣卫Demo 下面让我们来用代码还原一下场景 定义锦衣卫行为接收任务反馈监听信息 public interface Observer {void receiveTask(String taskDescription); // 接收监听任务void reportBack(String report); // 向朱元璋反馈信息 } 定义主题类朱元璋的行为 import java.util.List;public interface Subject {void assignTask(String taskDescription); // 下达监听任务void receiveReport(String report); // 接收反馈 } 定义具体主题类朱元璋 import java.util.ArrayList; import java.util.List;public class ZhuYuanZhang implements Subject {private ListObserver observers new ArrayList();Overridepublic void assignTask(String taskDescription) {System.out.println(朱元璋下达监听任务 taskDescription);for (Observer observer : observers) {observer.receiveTask(taskDescription);}}Overridepublic void receiveReport(String report) {System.out.println(朱元璋收到反馈 report);}public void registerObserver(Observer observer) {observers.add(observer);}public void removeObserver(Observer observer) {observers.remove(observer);} } 定义具体实行监听示例锦衣卫二虎小弟锦衣卫作为观察者负责监视刘伯温的行动并向朱元璋汇报。 public class JinyiWei implements Observer {private String name;private Subject zhuYuanZhang;public JinyiWei(String name, Subject zhuYuanZhang) {this.name name;this.zhuYuanZhang zhuYuanZhang;}Overridepublic void receiveTask(String taskDescription) {System.out.println(name 接收到任务 taskDescription);// 模拟监听过程String report performMonitoring(taskDescription);// 向朱元璋反馈信息reportBack(report);}Overridepublic void reportBack(String report) {zhuYuanZhang.receiveReport(report);}private String performMonitoring(String taskDescription) {// 模拟监听过程return 监听结果刘伯温 taskDescription;} } 开始监听刘伯温 public class Main {public static void main(String[] args) {// 创建朱元璋主题Subject zhuYuanZhang new ZhuYuanZhang();// 创建锦衣卫观察者Observer jinyiWei1 new JinyiWei(锦衣卫 A, zhuYuanZhang);Observer jinyiWei2 new JinyiWei(锦衣卫 B, zhuYuanZhang);// 注册锦衣卫zhuYuanZhang.registerObserver(jinyiWei1);zhuYuanZhang.registerObserver(jinyiWei2);// 朱元璋下达监听任务zhuYuanZhang.assignTask(监视刘伯温在青田老家的行动);zhuYuanZhang.assignTask(监视刘伯温准备回京的行动);// 移除一个锦衣卫zhuYuanZhang.removeObserver(jinyiWei1);// 再次下达监听任务zhuYuanZhang.assignTask(监视刘伯温抵达京城后的行动);} }// 朱元璋下达监听任务监视刘伯温在青田老家的行动 锦衣卫 A 接收到任务监视刘伯温在青田老家的行动 锦衣卫 B 接收到任务监视刘伯温在青田老家的行动 朱元璋收到反馈监听结果刘伯温 在青田老家与旧部密谈 朱元璋收到反馈监听结果刘伯温 在青田老家与旧部密谈 朱元璋下达监听任务监视刘伯温准备回京的行动 锦衣卫 A 接收到任务监视刘伯温准备回京的行动 锦衣卫 B 接收到任务监视刘伯温准备回京的行动 朱元璋收到反馈监听结果刘伯温 准备回京行动异常 朱元璋收到反馈监听结果刘伯温 准备回京行动异常 朱元璋下达监听任务监视刘伯温抵达京城后的行动 锦衣卫 B 接收到任务监视刘伯温抵达京城后的行动 朱元璋收到反馈监听结果刘伯温 抵达京城后与胡惟庸密会 3.2 Spring 事件机制与消息队列MQ的观察者模式 在实际应用中我们一般不自己实现观察者模式多数使用到的是Spring 事件机制和消息队列MQ。 3.2.1 Spring 中观察者模式的四个角色 事件Event 定义ApplicationEvent 是所有事件对象的父类继承自 JDK 的 EventObject。 作用所有自定义事件都需要继承 ApplicationEvent并通过 getSource() 方法获取事件源。 内置事件Spring 提供了多种内置事件如 ContextRefreshedEvent、ContextStartedEvent、ContextStoppedEvent、ContextClosedEvent 和 RequestHandledEvent。 事件监听器Listener 定义ApplicationListener 是事件监听器接口继承自 JDK 的 EventListener。 作用监听器通过实现 onApplicationEvent(ApplicationEvent event) 方法来处理事件。当事件发生时Spring 会调用此方法。 实现方式可以通过实现 ApplicationListener 接口或使用 EventListener 注解来定义监听器。 事件源Event Source 定义ApplicationContext 是 Spring 的核心容器也是事件的发布者。 作用ApplicationContext 继承自 ApplicationEventPublisher通过 publishEvent(Object event) 方法发布事件。 发布方式事件可以由任何组件通过调用 ApplicationContext 的 publishEvent 方法发布。 事件管理器Event Multicaster 定义ApplicationEventMulticaster 是事件管理器负责事件监听器的注册和事件的广播。 作用当 ApplicationContext 发布事件时ApplicationEventMulticaster 负责将事件广播给所有注册的监听器。 注册方式监听器可以通过注解如 EventListener或通过实现 ApplicationListener 接口并注册到 ApplicationContext 中。 3.2.2 Spring事件与MQ的对比 场景Spring 事件机制消息队列MQ单体应用内部事件传递✅ 适合低延迟❌ 过于复杂性能未必优于直接调用分布式系统通信❌ 需额外实现跨容器事件传递✅ 天然支持分布式适合跨系统通信高可靠性场景❌ 容器故障可能导致事件丢失✅ 提供持久化和重试机制确保消息不丢失大规模并发消息处理❌ 不支持高并发场景✅ 专为高并发设计支持海量消息传递事务一致性要求高的场景❌ 无原生事务支持需手动处理✅ 提供事务机制如 Kafka 事务 API消息顺序严格要求的场景❌ 无顺序性保障✅ 支持消息顺序如 Kafka 分区内消息有序
http://www.zqtcl.cn/news/190549/

相关文章:

  • 国家免费技能培训官网白杨seo博客
  • 福州seo网站建设微服务网站
  • 网站宽度 像素长沙电商运营培训
  • 备案上个人网站和企业网站的区别app开发多少钱一个
  • 有限公司网站建设 中企动力佛山培训机构招生方案
  • 扫黄打非网站建设专业的高端网站制作公司
  • 做自媒体发视频用哪些网站江西网站建设哪家好
  • wordpress用户列表南宁百度seo排名优化
  • 做网站时如何写接口文档上海网站设计建设公司
  • 网站小图标怎么制作平面设计素材网站推荐
  • 多元网络兰州网站建设惠州网页建站模板
  • 网站建设中首页模板下载网页制作模板保存
  • 宁夏做网站的江苏网站建设的案例展示
  • 网站功能需求文档如何免费域名注册
  • 推广网站的软件包头移动的网站建设
  • 自己制作音乐的软件免费上海seo怎么优化
  • 学vue可以做pc网站网站站长统计怎么弄
  • 做物流的可以在那些网站找客户大淘客网站建设app
  • 石家庄兼职做网站dedecms做视频网站
  • 优化公司怎么优化网站的网站 意义
  • 唯品会一家专门做特卖的网站手机版招聘网站开发技术维护
  • 做短租哪个网站wordpress 4.7
  • 网站换空间 site网站域没到期不能续费吗
  • 找别人做网站要考虑哪些网站导航条设计欣赏
  • mvc网站开发实例wordpress雪人主题2.0
  • 红色好看的网站中山网站建设工作室
  • 如何做喊单网站flask公司网站开发
  • 简单个人网站制作流程自己怎么做卖服装的网站
  • 网站开发公司创业做洁净的网站
  • 要建一个优惠卷网站怎么做企业开发小程序公司