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

成都网站建设 四川冠辰jsp网站开发公司

成都网站建设 四川冠辰,jsp网站开发公司,wordpress产品页面,用户体验不好的网站责任链模式#xff08;Chain of Responsibility Pattern#xff09;是一种行为型设计模式#xff0c;它允许多个对象依次处理同一个请求#xff0c;形成一条责任链。当客户端提交一个请求时#xff0c;请求沿着责任链传递#xff0c;直到有一个处理者能够处理该请求为止。…责任链模式Chain of Responsibility Pattern是一种行为型设计模式它允许多个对象依次处理同一个请求形成一条责任链。当客户端提交一个请求时请求沿着责任链传递直到有一个处理者能够处理该请求为止。 概念 在责任链模式中通常有一个抽象处理者Handler类它定义了处理请求的接口和一个后继处理者的引用。具体处理者ConcreteHandler继承抽象处理者并实现请求处理的方法。每个具体处理者都决定自己能处理哪些请求如果不能处理则将请求传递给下一个处理者。 优点 解耦: 将请求的发送者和接收者解耦请求者不需要知道谁将处理请求处理者也不需要知道请求的发送者是谁。灵活性: 可以动态地新增或修改处理者改变责任链结构灵活地处理请求。单一职责: 每个具体处理者只需关注自己能够处理的请求符合单一职责原则。 缺点 无保障完成: 请求可能到达链末端而得不到处理需要事先设置好默认的处理方式或保证有一个终止处理者。性能考虑: 链过长时请求可能需要遍历整个链才能找到合适的处理者。 使用场景 多级审批流程如请假审批、报销审批等不同级别的领导可以作为具体处理者形成一条责任链。日志记录不同级别的日志处理器可以组成责任链将日志信息传递给不同的处理器处理。用户权限验证多个验证器形成责任链依次进行用户权限验证。 案例 假设有一个电商系统用户下单后需要依次进行库存检查、优惠券验证、支付处理等操作。如果其中一环出现问题后续操作将无法继续进行。 // 订单类 class Order {private String orderNumber;private double totalAmount;private String couponCode;public Order(String orderNumber, double totalAmount, String couponCode) {this.orderNumber orderNumber;this.totalAmount totalAmount;this.couponCode couponCode;}public String getOrderNumber() {return orderNumber;}public double getTotalAmount() {return totalAmount;}public String getCouponCode() {return couponCode;} }// 抽象处理者 abstract class OrderHandler {protected OrderHandler successor;public void setSuccessor(OrderHandler successor) {this.successor successor;}public abstract void handleOrder(Order order); }// 具体处理者 - 库存检查 class StockCheckHandler extends OrderHandler {public void handleOrder(Order order) {if (checkStock(order)) {System.out.println(库存检查通过订单号 order.getOrderNumber());if (successor ! null) {successor.handleOrder(order);}} else {System.out.println(库存不足无法处理订单 order.getOrderNumber());}}private boolean checkStock(Order order) {// 检查库存是否足够// 省略具体实现return true;} }// 具体处理者 - 优惠券验证 class CouponValidationHandler extends OrderHandler {public void handleOrder(Order order) {if (validateCoupon(order)) {System.out.println(优惠券验证通过订单号 order.getOrderNumber());if (successor ! null) {successor.handleOrder(order);}} else {System.out.println(优惠券验证失败无法处理订单 order.getOrderNumber());}}private boolean validateCoupon(Order order) {// 验证优惠券是否有效// 省略具体实现return true;} }// 具体处理者 - 支付处理 class PaymentHandler extends OrderHandler {public void handleOrder(Order order) {if (processPayment(order)) {System.out.println(支付处理完成订单号 order.getOrderNumber());// 这是最后一环不再调用 successor.handleOrder(order);} else {System.out.println(支付处理失败无法处理订单 order.getOrderNumber());}}private boolean processPayment(Order order) {// 处理支付逻辑// 省略具体实现return true;} }// 客户端代码 public class Client {public static void main(String[] args) {OrderHandler stockCheckHandler new StockCheckHandler();OrderHandler couponValidationHandler new CouponValidationHandler();OrderHandler paymentHandler new PaymentHandler();stockCheckHandler.setSuccessor(couponValidationHandler);couponValidationHandler.setSuccessor(paymentHandler);Order order new Order(12345, 100, DISCOUNT_10_OFF);stockCheckHandler.handleOrder(order);} }在上述案例中每个具体处理者都专注于自己的责任并通过 setSuccessor 方法将责任传递给下一个处理者。当客户端提交一个订单时订单会依次经过库存检查、优惠券验证和支付处理只有在责任链上的所有处理者都处理成功时订单才能被完整地处理。
http://www.zqtcl.cn/news/155663/

相关文章:

  • 叮当快药网站谁做的网站开发遇到的最大困难
  • 一个域名可以建几个网站毕业设计可以做哪些简单网站
  • 知名商城网站建设报价wordpress 后台 logo
  • 单位网站建设框架yellow网站推广联盟
  • html5和php做网站做网站租用服务器
  • 网站开发中效率较高的编程语言公司域名注册流程
  • 万户网站管理系统4.0cms监控系统手机版下载
  • 宁波专业网站建设怎么做如何做一个虚拟网站
  • 网站栏目建设调研公司怎么建立一个网站
  • 苍溪建设局网站网站建设和维护采购协议
  • 代做网站微信号下载 wordpress插件
  • 泉州住房建设局网站wordpress输入html代码
  • 为什么访问外国网站速度慢沈阳网站公司排名
  • 网站建设+泰安网站项目建设策划方案
  • 微信人生里面微网站怎么做wordpress 第三方登录 代码
  • 做商城网站哪里高端大气网站案例
  • 网站做项目网站设计公司深
  • 学校做网站及费用建设网站有何要求
  • 河北邢台移动网站建设宁波网站开发公司电话
  • 免费建立个人网站申请seo搜索引擎优化推广
  • 如何拷贝服务器里面网站做备份金融网站怎么做的
  • 什么网站做的比较好网上投资网站建设
  • 公司网站运营方案策划办网站怎么赚钱
  • 贾汪区建设局网站设计接单兼职网站
  • 东莞商城网站建设哪家便宜wordpress 插件路径
  • 网站服务器 安全快递系统专注快递企业网站开发
  • 旅游网站平台建设的方案深圳移动官网网站建设
  • 如何建设企业人力资源网站网站建设和网络优化的区别
  • 辽宁网站设计影响网站用户体验
  • cms网站如何修改黄山建设网站