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

住建局特种作业证seo百度网站排名研究中心关键词首页优化

住建局特种作业证,seo百度网站排名研究中心关键词首页优化,做网站申请个体户,网站稳定性化繁为简#xff1a;中介者模式如何管理复杂对象交互 中介者模式 是一种行为型设计模式#xff0c;定义了一个中介者对象#xff0c;来封装一组对象之间的交互。中介者模式通过将对象之间的交互行为从多个对象中抽离出来#xff0c;集中封装在一个中介者对象中#xff0c;… 化繁为简中介者模式如何管理复杂对象交互 中介者模式 是一种行为型设计模式定义了一个中介者对象来封装一组对象之间的交互。中介者模式通过将对象之间的交互行为从多个对象中抽离出来集中封装在一个中介者对象中从而使各个对象之间的耦合松散且可以独立地改变它们之间的交互。 核心思想 中介者模式通过引入一个中介者协调多个对象之间的交互避免对象之间的直接通信从而减少对象之间的耦合。 中介者模式的组成角色 Mediator中介者接口 中介者定义了对象之间交互的接口负责协调各个对象之间的通信行为。 ConcreteMediator具体中介者 实现了 Mediator 接口协调各具体同事对象之间的交互。它了解所有的同事对象并通过其实现交互逻辑。 Colleague同事类 每个同事对象只知道中介者不能直接与其他同事对象通信。所有的交互都通过中介者来完成。 ConcreteColleague具体同事类 实现了 Colleague 接口依赖中介者与其他同事对象通信。每个具体同事对象的行为受到中介者的约束。 中介者模式的 UML 类图 类图解释 Mediator中介者接口定义了同事对象之间的通信接口通常定义 send() 方法来协调通信。ConcreteMediator具体中介者 实现了 Mediator 接口具体负责管理和协调同事对象之间的通信。它知道所有的具体同事对象并通过 send() 方法传递消息或协调操作。它也可以持有具体的同事对象的引用负责管理这些对象。 Colleague同事类抽象类或接口每个同事对象依赖中介者与其他同事进行交互。它不直接与其他同事对象通信而是通过中介者通信。ConcreteColleague1、ConcreteColleague2具体同事类实现 Colleague定义各自的具体操作。同事对象通过中介者协调相互间的通信 工作原理 集中通信中介者模式通过引入 Mediator将多个对象之间的交互逻辑集中到中介者中使得各个同事类之间的关系变得松散耦合。消息传递同事对象通过调用中介者的 send() 方法进行通信。中介者负责接收和转发消息并协调其他同事对象的行为。解耦同事对象同事对象之间不直接交互而是通过中介者来处理。这样一来各个对象之间的依赖关系被削弱了。 案例机场塔台与飞机的调度 场景说明 在机场飞机起飞和降落的调度是一个非常复杂的过程。如果每架飞机都直接与其他飞机进行通信会导致混乱并增加空中事故的风险。因此机场有一个控制塔塔台它负责协调所有飞机的起飞和降落。 控制塔是中介者飞机之间的所有通信都必须通过控制塔进行。飞机通过塔台来获取是否可以起飞或降落从而避免与其他飞机发生冲突。 中介者模式的角色在机场塔台场景中的映射 Mediator中介者接口机场控制塔负责协调所有飞机的起飞和降落。ConcreteMediator具体中介者具体实现的控制塔协调飞机的飞行状态。Colleague同事类抽象飞机类代表参与通信的对象飞机。ConcreteColleague具体同事类具体的飞机类通过控制塔来决定起飞或降落。 代码实现机场塔台调度系统 Step 1: 定义中介者接口 中介者接口定义了调度方法用于协调飞机之间的通信。 // 中介者接口塔台 public interface Mediator {void notify(String message, Airplane airplane); } Step 2: 实现具体的中介者 ControlTower 类是具体的中介者它负责接收飞机的状态并通知其他飞机确保起飞和降落顺序的安全。 import java.util.ArrayList; import java.util.List;// 具体中介者控制塔 public class ControlTower implements Mediator {private ListAirplane airplanes;public ControlTower() {this.airplanes new ArrayList();}public void registerAirplane(Airplane airplane) {airplanes.add(airplane);}Overridepublic void notify(String message, Airplane airplane) {for (Airplane a : airplanes) {if (a ! airplane) {a.receive(message); // 通知其他飞机}}} } Step 3: 定义飞机抽象类 飞机类通过中介者来发送和接收信息而不直接与其他飞机通信。 // 飞机抽象类 public abstract class Airplane {protected Mediator mediator;protected String name;public Airplane(Mediator mediator, String name) {this.mediator mediator;this.name name;}public abstract void send(String message);public abstract void receive(String message); } Step 4: 实现具体飞机类 具体飞机类实现了 send() 和 receive() 方法通过塔台来发送和接收消息。 Boeing737 类 // 具体飞机Boeing 737 public class Boeing737 extends Airplane {public Boeing737(Mediator mediator, String name) {super(mediator, name);}Overridepublic void send(String message) {System.out.println(this.name sends message: message);mediator.notify(message, this); // 通过塔台发送消息}Overridepublic void receive(String message) {System.out.println(this.name receives message: message);} } AirbusA320 类 // 具体飞机Airbus A320 public class AirbusA320 extends Airplane {public AirbusA320(Mediator mediator, String name) {super(mediator, name);}Overridepublic void send(String message) {System.out.println(this.name sends message: message);mediator.notify(message, this); // 通过塔台发送消息}Overridepublic void receive(String message) {System.out.println(this.name receives message: message);} } Step 5: 测试中介者模式 通过 ControlTower 来协调 Boeing737 和 AirbusA320 之间的通信确保飞机的起飞和降落顺序。 public class MediatorPatternDemo {public static void main(String[] args) {// 创建控制塔ControlTower tower new ControlTower();// 创建飞机并注册到塔台Airplane boeing737 new Boeing737(tower, Boeing 737);Airplane airbusA320 new AirbusA320(tower, Airbus A320);tower.registerAirplane(boeing737);tower.registerAirplane(airbusA320);// 飞机发送消息boeing737.send(Requesting permission to land.);airbusA320.send(Requesting permission to take off.);} } 输出结果 Boeing 737 sends message: Requesting permission to land. Airbus A320 receives message: Requesting permission to land. Airbus A320 sends message: Requesting permission to take off. Boeing 737 receives message: Requesting permission to take off. 中介者模式在机场塔台场景中的工作原理 集中通信所有的飞机同事类不直接通信而是通过控制塔中介者进行协调。每架飞机都通过塔台发送和接收消息。消息传递当一架飞机发送起飞或降落请求时塔台负责通知其他飞机并保证飞行安全和秩序。降低耦合性飞机之间不直接通信所有交互通过塔台完成从而降低了飞机之间的耦合增强了系统的灵活性和扩展性。 SpringMVC 中的 应用 在 Spring Framework 中DispatcherServlet 作为前端控制器实际上也承担了类似于中介者的作用。它在 Spring MVC 架构中负责协调不同组件如控制器、视图解析器和处理器的交互。 原理 DispatcherServlet 作为一个统一的请求分发器负责接收 HTTP 请求并根据请求的 URL 或其他条件将请求分发给适当的处理器如 Controller 的方法。它并不直接参与具体的请求处理而是协调多个组件来完成请求-响应的流程。控制器、视图解析器、处理器等组件之间不直接通信而是通过 DispatcherServlet 进行交互。 // DispatcherServlet 伪代码简化示例 public class DispatcherServlet extends HttpServlet {Overrideprotected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {// 根据请求查找对应的控制器Handler handler getHandler(request);// 调用控制器处理请求ModelAndView mv handler.handleRequest(request, response);// 解析视图并返回响应render(mv, response);} } 在这里DispatcherServlet 类似于中介者协调多个组件之间的交互不同的控制器和视图解析器不直接互相通信而是通过 DispatcherServlet 进行处理。 中介者模式的优缺点与应用场景总结 优点 降低对象之间的耦合性 中介者模式通过引入中介者使多个对象之间的依赖关系转变为与中介者的依赖减少了对象之间的直接交互降低了系统的耦合度。 简化对象之间的通信 所有通信都通过中介者集中管理使得系统结构更加清晰逻辑集中尤其在多方通信的复杂系统中简化了交互逻辑。 符合开闭原则 中介者模式可以方便地扩展或修改交互逻辑而不影响各个同事对象。可以通过修改中介者来增加或调整各对象之间的交互。 提高系统的灵活性 当需要增加新的对象或修改对象之间的交互行为时可以通过中介者进行控制增强了系统的扩展性和灵活性。 缺点 中介者可能变得复杂 随着系统中同事对象的增多中介者需要处理的交互逻辑也会变得越来越复杂可能导致中介者变得难以维护形成一个“上帝对象”。 不适合简单场景 如果对象之间的交互非常简单使用中介者模式会引入不必要的复杂性增加维护成本。 应用场景 复杂对象交互的系统 在多个对象之间存在复杂交互的系统中中介者模式非常适用。例如GUI 控件交互如按钮、文本框、下拉菜单等可以通过中介者来管理。 消息队列系统 在消息队列如 JMS中中介者管理生产者和消费者之间的消息传递解耦了消息的发送和接收避免直接通信。 事件驱动系统 在事件驱动架构中事件发布者和监听者之间的通信可以通过中介者来协调避免对象之间的紧密耦合。例如Spring 的事件驱动机制利用 ApplicationEventPublisher 和 ApplicationListener 解耦了事件发布和处理。 航空管制系统 像机场塔台这种需要协调多架飞机起降的系统中介者可以集中管理对象的行为保证复杂交互的有序进行。
http://www.w-s-a.com/news/701621/

相关文章:

  • 跨境电商平台网站建设广州西安官网seo推广
  • 我和你99谁做的网站小程序制作第三方平台
  • 建设银行网站用户名鹤岗网站seo
  • 做一元夺宝网站需要什么条件西安市做网站的公司
  • 零基础建设网站教程郑州做网站推广价格
  • 平面设计免费素材网站新开三端互通传奇网站
  • ppt模板免费下载 素材医疗seo网站优化推广怎么样
  • 课程网站怎么做wordpress文章改背景色
  • 网络营销从网站建设开始卖汽车配件怎么做网站
  • 手机商城网站制作公司济南想建设网站
  • .net 建网站网站网站做员工犯法吗
  • 电子商务网站建设说课稿棕色网站设计
  • 怎么做律所的官方网站红塔网站制作
  • 装一网装修平台官网惠州seo按天付费
  • 湖南建设监理报名网站东莞模块网站建设方案
  • 网站建设小组个人主页html源码
  • 响应式网站检测工具营销公司业务范围
  • 网站源码如何安装做游戏课程网站
  • 选服务好的网站建设亚洲砖码砖专区2022
  • 网站快速查找wordpress 悬停 图片 文字
  • 网站续费 多久想自己做网站该学些什么
  • 可以自己做网站wordpress英文写作插件
  • 国外可以做会员网站的网站怎么查百度竞价关键词价格
  • 新站网站建设亚马逊关键词
  • 电商网站前端架构设计上海市建设工程安全生产协会网站
  • 东莞企业免费模版网站建设一般网站维护要多久
  • 著名建筑设计网站常州制作网站价格
  • 食品营销型网站广东省广州市白云区
  • 如何做网站哪个站推广描述对于营销型网站建设很重要飘红效果更佳
  • 济阳做网站公司99企业邮箱888