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

做阿里云网站的公司吗南昌做网站后台投票

做阿里云网站的公司吗,南昌做网站后台投票,个人做电商怎么入门,知乎 php网站开发书籍一、责任链模式的实现方式 基本实现结构 抽象处理者(Handler) 定义处理请求的接口,通常包含以下方法: handleRequest(Request request):抽象方法,处理请求的核心逻辑。setNext(Handler next):设…

一、责任链模式的实现方式

  1. 基本实现结构
  • 抽象处理者(Handler)
    定义处理请求的接口,通常包含以下方法:
    • handleRequest(Request request):抽象方法,处理请求的核心逻辑。
    • setNext(Handler next):设置下一个处理者的引用,形成链式结构。
      例如:
    public abstract class Handler {protected Handler next;public void setNext(Handler next) { this.next = next; }public abstract void handleRequest(int request);
    }
    
  • 具体处理者(Concrete Handler)
    继承抽象处理者,实现处理逻辑。若无法处理请求,则传递给下一个处理者。例如:
    public class TeamLeader extends Handler {@Overridepublic void handleRequest(int days) {if (days <= 1) {System.out.println("TeamLeader批准了" + days + "天假期");} else if (next != null) {next.handleRequest(days);}}
    }
    
  • 客户端(Client)
    负责组装处理链并提交请求。例如:
    public class LeaveRequest {public static void main(String[] args) {Handler teamLeader = new TeamLeader();Handler manager = new Manager();teamLeader.setNext(manager);teamLeader.handleRequest(2); // 输出:Manager批准了2天假期}
    }
    
  1. 扩展实现方式
  • 支持中断的链式处理
    处理者返回布尔值表示是否继续传递请求,若返回false则终止链式传递。例如:
    public interface Handler {boolean handle(Request request);
    }
    
    客户端通过遍历处理链并检查返回值决定是否继续传递。
  • 动态构建链式结构
    使用集合(如List)动态添加处理者,适用于需要灵活配置的场景。例如:
    List handlers = new ArrayList<>();
    handlers.add(new ConcreteHandlerA());
    handlers.add(new ConcreteHandlerB());
    for (int i = 0; i < handlers.size() - 1; i++) {handlers.get(i).setNext(handlers.get(i + 1));
    }
    

二、测试方法

  1. 单元测试
  • 验证单个处理者逻辑
    测试每个具体处理者是否按预期处理请求。例如:
    @Test
    public void testTeamLeaderApproval() {TeamLeader leader = new TeamLeader();leader.handleRequest(1); // 预期输出:批准1天假期leader.handleRequest(2); // 预期不处理,传递给下一个处理者
    }
    
  • 验证链式传递
    测试请求是否按链式顺序传递。例如:
    @Test
    public void testChainHandling() {Handler leader = new TeamLeader();Handler manager = new Manager();leader.setNext(manager);leader.handleRequest(3); // 预期输出:Manager批准3天假期
    }
    
  1. 集成测试
  • 模拟复杂场景
    测试多级处理者协同处理请求的场景。例如:
    public class IntegrationTest {public static void main(String[] args) {Handler leader = new TeamLeader();Handler director = new Director();leader.setNext(director);leader.handleRequest(10); // 预期输出:Director批准10天假期}
    }
    
  • 边界条件测试
    验证处理者在边界值(如最大审批天数)下的行为。例如:
    @Test
    public void testBoundaryConditions() {Handler director = new Director();director.handleRequest(7);  // 预期批准7天director.handleRequest(8);  // 预期输出:无法批准
    }
    
  1. 性能测试
  • 链式长度影响
    测试长链对性能的影响,例如处理1000次请求的耗时。
  • 中断机制测试
    验证中断链式传递的逻辑是否生效,例如处理者返回false后是否停止传递。

三、优缺点与适用场景

优点

  1. 解耦请求发送者与处理者:客户端无需知道具体处理者,仅需提交请求。
  2. 灵活扩展:新增处理者无需修改现有代码,符合开闭原则。
  3. 动态配置:支持运行时动态调整处理链顺序或节点。
    缺点
  4. 请求可能未被处理:若链末无处理者,请求可能被忽略。
  5. 性能损耗:长链可能导致处理延迟。
    适用场景
  6. 审批流程(如请假、报销)。
  7. 过滤器链(如日志记录、权限校验)。
  8. 事件处理(如GUI事件冒泡)。

四、总结

Java责任链模式通过链式结构解耦请求与处理者,适用于需要动态处理请求的场景。其实现需关注抽象处理者的设计、具体处理者的逻辑实现,以及客户端的链式组装。测试时需覆盖单个处理者、链式传递、边界条件及性能等维度,确保系统健壮性。

http://www.dtcms.com/a/549595.html

相关文章:

  • Docker 容器命令深度解析:从docker run到docker ps的精通之路
  • 开源自动驾驶平台全景:超越Autoware和Apollo
  • 深入JVM:让Java性能起飞的核心原理与优化策略
  • RFID 技术赋能汽车制造:发动机气缸缸体生产线智能化升级案例
  • Java Excel页面设置配置指南
  • 网站集约化建设做法ecommercial+wordpress
  • C#:调试附加到进程
  • Redis哈希槽
  • SAP PP BOM查询报表分享
  • 国内 扁平化 网站坂田杨美企业网站建设
  • 抖音火花任务自动化脚本
  • 从入门到实践:Linux 基础学习(xshell)
  • 《URP管线主导的角色材质、阴影与显存动态适配优化方案》
  • TensorFlow深度学习实战——自定义图数据集
  • Flutter 3.29.0 使用RepaintBoundary或者ScreenshotController出现导出图片渲染上下颠倒问题
  • Flutter---个人信息(4)---实现修改生日日期
  • 不止于加热:管式炉在材料科学与新能源研发中的关键作用
  • 深圳网站建设方案优化深圳发布广告的平台有哪些
  • Go语言中json.RawMessage
  • Pytorch常用函数学习摘录
  • 个人什么取消网站备案铭万做的网站怎么样
  • 2025-10-30 ZYZOJ Star(斯达)模拟赛 hetao1733837的record
  • 百胜中台×OceanBase:打造品牌零售降本增效的数字核心引擎,热门服饰、美妆客户已实践
  • 深度学习调试工具链:从PyTorch Profiler到TensorBoard可视化
  • 不可变借用的规则与限制: 从只读语义到零拷贝架构的 5 000 字深潜
  • 专题三 之 【二分查找】
  • C++进阶: override和final说明符-----继承2中重写的确认官和刹车(制动器)
  • 数据科学每日总结--Day7--数据库
  • opencv 学习: 01 ubuntu20.04 下 opencv 4.12.0 源码编译
  • 满足“国六”标准的通用型故障诊断仪:Q-OBD