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

责任链模式+策略模式在项目中的实践

1. 责任链模式实现分析

核心组件
  1. IProcessRule 接口

    • 定义责任链节点行为:filter(过滤逻辑)和 next(获取下一节点)。
    • 符合责任链的“处理-传递”模式。
  2. AbstractProcessRule 抽象类

    • 实现公共逻辑:处理链式调用(若当前规则过滤后仍有多个候选,继续调用下一个规则)。
    • 子类只需实现 doFilter 方法,聚焦具体规则逻辑,符合 模板方法模式
  3. 具体规则类(如 DistanceRule

    • 继承 AbstractProcessRule,实现 doFilter 方法,例如按距离排序。
责任链执行流程
// 示例:构建责任链
IProcessRule chain = new DistanceRule(new ScoreRule(new CapacityRule(null)));

// 执行过滤
List<ServeProviderDTO> candidates = chain.filter(providers);
  1. 调用 DistanceRule.doFilter() 按距离排序。
  2. 若结果数量 >1,调用 ScoreRule.doFilter() 按评分排序。
  3. 若仍 >1,调用 CapacityRule.doFilter() 按接单能力排序。
  4. 最终返回唯一候选或最终列表。

2. 策略模式与责任链的结合

策略模式的角色
  • 策略接口:定义派单策略的入口方法(如 DispatchStrategy#dispatch)。
  • 具体策略类:每个策略对应一组责任链规则。例如:
    public class PriorityDistanceStrategy implements DispatchStrategy {
        private IProcessRule ruleChain;
    
        public PriorityDistanceStrategy() {
            // 策略1的规则链:距离 → 评分
            ruleChain = new DistanceRule(new ScoreRule(null));
        }
    
        @Override
        public ServeProviderDTO dispatch(List<ServeProviderDTO> providers) {
            List<ServeProviderDTO> result = ruleChain.filter(providers);
            return CollUtils.isEmpty(result) ? null : result.get(0);
        }
    }
    
扩展性优势
  • 新增策略:创建新类(如 CapacityFirstStrategy)并定义其规则链。
  • 新增规则:继承 AbstractProcessRule 实现新逻辑,无需修改已有代码。

相关文章:

  • PostgreSQL 如何有效地处理数据的加密和解密
  • rom定制系列------小米note3 原生安卓15 批量线刷 默认开启usb功能选项 插电自启等
  • Python组合数据类型(一)
  • SyntaxError: Unexpected end of input
  • DeepSeek + 沉浸式翻译 打造智能翻译助手
  • RAG系统(检索增强生成)的优化策略
  • 学习前端前需要了解的一些概念(详细版)
  • MATLAB—从入门到精通的第二天
  • vuejs相关链接和格式化插件推荐
  • vscode mac版本 配置git
  • 什么是AI Agent
  • C# 程序结构
  • 使用虚拟声卡播放音频文件作为麦克风声源
  • fastjson漏洞
  • 百度SEO关键词布局从堆砌到场景化的转型指南
  • rv1126交叉编译opencv+ffmpeg+x264
  • 【从零开始学习计算机科学】数字逻辑(七)触发器(FF)
  • RangeError: Radix must be an integer between 2 and 36
  • 生物信息学工作流(Bioinformatics Workflow):概念、历史、现状与展望?
  • ftp、sftp、tftp的区别
  • 网站要怎么做才能获得市场份额/想做电商怎么入手
  • 信用中国 网站有那个部门支持建设/今日网站收录查询
  • 台州建设信息港网站/安卓优化大师手机版
  • 怎样在网站模板上做修改/沈阳百度seo关键词排名优化软件
  • 如何利用服务器做网站/国外推广都是怎么推广
  • 网站建设与管理 中职/西安网站seo优化公司