您的位置:首页 > 新闻 > 会展 > 品牌建设ppt文档下载_专业网站设计企业_谷歌搜索引擎镜像_卡一卡二卡三入口2021

品牌建设ppt文档下载_专业网站设计企业_谷歌搜索引擎镜像_卡一卡二卡三入口2021

2025/4/21 23:34:05 来源:https://blog.csdn.net/liberalliushahe/article/details/147046030  浏览:    关键词:品牌建设ppt文档下载_专业网站设计企业_谷歌搜索引擎镜像_卡一卡二卡三入口2021
品牌建设ppt文档下载_专业网站设计企业_谷歌搜索引擎镜像_卡一卡二卡三入口2021

简介

很多公司都有请假的流程,当员工提交请假申请时,请求会沿着 组长 → 经理 → CEO 的链条传递,直到有对应层级的领导处理。

适用场景

  1. 一个请求需要多个对象中的一个或多个处理(如审批流程、过滤器链)。
  2. 处理对象和顺序需动态指定(如中间件、事件冒泡)。
  3. 数据清洗(去重)→格式转换→校验→写入数据库,每个步骤作为独立处理器,支持动态插拔。
  4. 日志消息同时发送至控制台、文件、第三方监控系统(所有处理器均执行,不中断链)
  5. 订单提交后触发库存锁定→支付验证→物流分配→通知推送,失败时回滚或转人工处理。
  6. 传感器信号经过噪声过滤→数据格式化→异常检测→触发告警,动态调整处理顺序。
  7. 医疗诊断系统中,症状数据依次由规则引擎→机器学习模型→专家人工复核处理。

优点

  1. 解耦:发送者无需关心谁来处理请求。
  2. 灵活:可动态调整处理链顺序或新增节点。

缺点

  1. 请求可能未被处理:如果链条未覆盖所有情况。
  2. 性能问题:长链条可能导致延迟。

类图

在这里插入图片描述

代码

// 抽象处理者
abstract class Approver {protected Approver successor;public void setNext(Approver successor) {this.successuccessor = successor;}public abstract void processRequest(int days);
}// 具体处理者:组长
class GroupLeader extends Approver {@Overridepublic void processRequest(int days) {if (days <= 3) {System.out.println("组长审批通过,请假" + days + "天");} else if (successor != null) {successor.processRequest(days);}}
}// 具体处理者:经理
class Manager extends Approver {@Overridepublic void processRequest(int days) {if (days <= 7) {System.out.println("经理审批通过,请假" + days + "天");} else if (successor != null) {successor.processRequest(days);}}
}// 具体处理者:CEO
class CEO extends Approver {@Overridepublic void processRequest(int days) {System.out.println("CEO审批通过,请假" + days + "天");}
}// 客户端
public class Client {public static void main(String[] args) {Approver groupLeader = new GroupLeader();Approver manager = new Manager();Approver ceo = new CEO();groupLeader.setNext(manager);manager.setNext(ceo);// 提交请假申请groupLeader.processRequest(5); // 经理处理groupLeader.processRequest(10); // CEO处理}
}

场景

Web请求过滤器链,HTTP请求依次经过认证、权限、日志过滤器。

// 抽象过滤器
abstract class Filter {private Filter next;public Filter setNext(Filter next) {this.next = next;return next;}public void doFilter(HttpRequest request) {handle(request);if (next != null) {next.doFilter(request);}}protected abstract void handle(HttpRequest request);
}// 具体过滤器:认证
class AuthFilter extends Filter {@Overrideprotected void handle(HttpRequest request) {System.out.println("认证检查:用户已登录");}
}// 具体过滤器:权限
class PermissionFilter extends Filter {@Overrideprotected void handle(HttpRequest request) {System.out.println("权限检查:用户有访问权限");}
}// 具体过滤器:日志
class LogFilter extends Filter {@Overrideprotected void handle(HttpRequest request) {System.out.println("记录请求日志");}
}// 客户端
public class WebServer {public static void main(String[] args) {Filter authFilter = new AuthFilter();Filter permissionFilter = new PermissionFilter();Filter logFilter = new LogFilter();authFilter.setNext(permissionFilter).setNext(logFilter);HttpRequest request = new HttpRequest();authFilter.doFilter(request); // 依次触发三个过滤器}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com