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

帮你做海报网站微信公众号这么创建

帮你做海报网站,微信公众号这么创建,做网站有什么平台,广告东莞网站建设技术支持文章目录 一、前言二、中介者模式1、定义2、未使用/使用中介者模式对比2.1、未使用中介者模式:2.2、使用中介者模式: 3、角色分析3.1、中介者(Mediator):3.2、同事(Colleague):3.3、…

文章目录

  • 一、前言
  • 二、中介者模式
    • 1、定义
    • 2、未使用/使用中介者模式对比
      • 2.1、未使用中介者模式:
      • 2.2、使用中介者模式:
    • 3、角色分析
      • 3.1、中介者(Mediator):
      • 3.2、同事(Colleague):
      • 3.3、客户(Client):
    • 4、中介者模式案例分析
      • 4.1、中介者
      • 4.2、同事
      • 4.3、客户
    • 5、代码示例
  • 三、总结

一、前言

本文将详细介绍设计模式中的中介者模式,其中包括,中介者模式的优点、缺点、各组成部分。

二、中介者模式

在这里插入图片描述

1、定义

中介者模式(Mediator Pattern)是一种设计模式,它定义了一个中介者类,该类将多个对象之间的通信抽象化,使得这些对象可以通过中介者进行通信,从而降低它们之间的直接耦合度。中介者模式适用于多个对象之间存在复杂的交互关系,直接耦合会导致代码变得复杂、难以维护和扩展。

2、未使用/使用中介者模式对比

2.1、未使用中介者模式:

在没有使用中介者模式的情况下,多个对象之间可能存在直接的相互依赖,导致代码的耦合度较高。当一个对象需要与其他多个对象进行交互时,它可能需要了解这些对象的详细信息,并直接调用它们的方法,这会增加代码的复杂性和难以维护性。

2.2、使用中介者模式:

通过引入中介者模式,可以将多个对象之间的交互抽象化,降低它们之间的直接耦合度。中介者类负责协调和管理各个对象之间的通信,各个对象只需要关注自身的职责,而不必关心其他对象的实现细节。这有助于简化代码,提高可维护性和可扩展性。

在未使用中介者模式的情况下,系统的各个子系统之间直接相互依赖,子系统之间的方法可以直接相互调用。这样的系统耦合性较大,不利于系统的维护和理解。

而使用中介者模式后,子系统之间的依赖关系被打破,各个子系统都只与中介者发生依赖,而不直接与其他子系统发生依赖。这样可以将系统中各个子系统的关系解耦,降低系统的复杂性,简化系统设计和理解。同时,中介者模式的引入也可以方便系统扩展和维护,因为对于子系统的修改和增加,只需要修改或增加中介者相应的处理方法即可,不需要对其他子系统进行修改。

3、角色分析

3.1、中介者(Mediator):

中介者类负责协调和管理各个对象之间的通信。它通常包含一个或多个 Colleague 对象的引用,并提供了相应的方法来处理或转发请求。中介者类通常没有具体的业务逻辑,而是根据需要调用相应的 Colleague 对象的方法。

3.2、同事(Colleague):

同事类是与中介者类进行交互的各个对象。每个同事类通常包含一些特定的业务逻辑,并且可以通过中介者来与其他同事类进行通信。

3.3、客户(Client):

客户类是使用中介者模式的对象。它通常只需要与中介者类进行交互,而不需要直接与各个同事类进行交互。

4、中介者模式案例分析

以电商平台的订单管理系统为例,订单管理系统涉及多个角色,如订单、购物车、用户等。这些角色之间存在复杂的交互关系,例如用户添加商品到购物车后可以提交订单,购物车可以修改订单状态等。

4.1、中介者

订单管理系统可以作为一个中介者,负责协调和管理各个角色之间的通信。例如,当用户提交订单时,订单管理系统可以调用购物车和库存管理系统的相关方法来处理请求。

4.2、同事

购物车、库存管理系统、支付系统等可以作为同事类,它们具有各自的业务逻辑,并可以通过订单管理系统进行通信。例如,购物车可以修改订单状态,库存管理系统可以检查商品库存等。

4.3、客户

用户可以作为客户类,他们只需要与订单管理系统进行交互,而不需要直接与其他同事类进行交互。用户可以通过订单管理系统来查看订单状态、取消订单等。

通过引入中介者模式,可以将各个角色之间的交互抽象化,降低它们之间的直接耦合度。这有助于简化代码,提高可维护性和可扩展性。

5、代码示例

// 中介者接口  
interface OrderMediator {  void addItemToCart(String itemId, int quantity);  void submitOrder(String userId);  
}  // 购物车同事类  
class ShoppingCart implements Colleague {  private Map<String, Integer> items = new HashMap<>();  private OrderMediator mediator;  public ShoppingCart(OrderMediator mediator) {  this.mediator = mediator;  }  @Override  public void handle(String message) {  if (message.startsWith("add")) {  String[] parts = message.split("\\s+");  addItemToCart(parts[1], 1);  } else if (message.equals("submit")) {  submitOrder(getUserId());  }  }  private void addItemToCart(String itemId, int quantity) {  items.put(itemId, items.getOrDefault(itemId, 0) + quantity);  mediator.addItemToCart(itemId, quantity);  }  private void submitOrder(String userId) {  // TODO: 提交订单的逻辑实现  System.out.println("Order submitted by user: " + userId);  }  private String getUserId() {  // TODO: 获取用户ID的逻辑实现  return "User123";  }  
}  // 库存管理系统同事类  
class InventorySystem implements Colleague {  private Map<String, Integer> inventory = new HashMap<>();  private OrderMediator mediator;  public InventorySystem(OrderMediator mediator) {  this.mediator = mediator;  }  @Override  public void handle(String message) {  if (message.startsWith("check")) {  String[] parts = message.split("\\s+");  checkInventory(parts[1]);  }  }  private void checkInventory(String itemId) {  int quantity = inventory.getOrDefault(itemId, 0);  System.out.println("Inventory quantity for item " + itemId + ": " + quantity);  }  
}  // 订单管理系统中介者类  
class OrderMediatorImpl implements OrderMediator {  private Map<String, Colleague> colleagues = new HashMap<>();  @Override  public void addItemToCart(String itemId, int quantity) {  Colleague colleague = colleagues.get(itemId);  if (colleague != null) {  colleague.handle("add " + quantity);  } else {  System.out.println("Item not found in the cart");  }  }  @Override  public void submitOrder(String userId) {  Colleague colleague = new ShoppingCart(this);  colleagues.put(userId, colleague);  colleague.handle("submit");  }  
}
public class Main {  public static void main(String[] args) {  OrderMediator orderMediator = new OrderMediatorImpl();  Colleague shoppingCart = new ShoppingCart(orderMediator);  Colleague inventorySystem = new InventorySystem(orderMediator);  orderMediator.addItemToCart("item1", 2); // 将item1加入购物车,数量为2  orderMediator.submitOrder("User123"); // 提交订单,用户ID为User123  inventorySystem.handle("check item1"); // 检查item1的库存数量  }
}

三、总结

中介者模式是一种重要的设计模式,它通过引入中介者类来降低多个对象之间的直接耦合度,从而提高代码的可维护性和可扩展性。在具体应用中,我们需要根据实际需求选择合适的中介者实现方式,并在合适的场景中应用该模式。

http://www.yayakq.cn/news/472509/

相关文章:

  • 电子商务软件网站建设的核心wordpress淘宝客插件开发
  • 跟男友做网站天津住房与城乡建设厅网站首页
  • 扬州建设企业网站做电商一个月可以赚多少钱
  • 广西建设局网站首页网站建设之家
  • 免费网站建设的html网页制作实例代码
  • iis怎么做网站网站怎么做来卖东西
  • 楼盘动态怎么seo快速排名
  • 速贝cms建站系统wordpress liuweili
  • 高端定制网站开发设计建站流程网站排名易下拉稳定
  • 玛丁图商城网站开发网站流量怎么挣钱
  • zenm自己做网站免费网站建站2773
  • h5电子商城网站开发网站快速排名互点软件
  • 招聘 负责网站开发网页上传和网站开发
  • 深圳网站设计公司wx成都柚米科技15html网页制作app手机版
  • 广州网站建设484186wordpress 注册 邮件
  • 一个域名访问不同的网站莱州网站设计
  • 高速公路建设管理局网站下载做蛋糕网站
  • 做交易网站需要多少钱上海人才网官网还是上海市人才网
  • ppt做视频模板下载网站有哪些内容做秩序册的网站
  • 单页加盟网站模板黄冈论坛网站有哪些
  • 如何推荐别人做网站南昌地宝网分类
  • 盘锦做网站专家平台推广费用
  • 怎么把自己做的网站发布出去网站建设微商城
  • django做的购物网站国内永久免费云服务器
  • 最好的网站开发平台个人网站需要什么页面
  • 嘉兴做网站多少钱.net网站开发教程百度贴吧
  • wordpress 自定义页面 模版网站优化的作用
  • 海宁做网站的公司wordpress指定模板
  • 网站开发学哪些网络游戏网站开发
  • 网站代码开发的网站建设公司那个好