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

泉州网站提升排名科技有限公司经营范围有哪些

泉州网站提升排名,科技有限公司经营范围有哪些,网络营销推广方案怎么写,企业信息填报年报填写责任链设计模式 🚩什么是责任链设计模式?🚩责任链设计模式的特点🚩责任链设计模式的结构🚩责任链设计模式的优缺点🚩责任链设计模式的Java实现🚩代码总结🚩总结 🚩什么是…

责任链设计模式

  • 🚩什么是责任链设计模式?
  • 🚩责任链设计模式的特点
  • 🚩责任链设计模式的结构
  • 🚩责任链设计模式的优缺点
  • 🚩责任链设计模式的Java实现
  • 🚩代码总结
  • 🚩总结

🚩什么是责任链设计模式?

责任链设计模式(Chain of Responsibility Pattern) 是一种 行为型设计模式,它允许多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链,并沿着这条链传递请求,直到有一个对象处理它为止。

使用场景

  • 当需要 多个对象可以处理同一个请求,但具体由哪个对象处理在运行时动态决定时

  • 当需要 在不明确指定接收者的情况下向多个对象中的一个提交请求

  • 当需要 动态指定一组对象处理请求 时(如审批流程、异常处理等)

🚩责任链设计模式的特点

  • 解耦请求发送者和接收者:发送者无需知道具体由哪个对象处理请求

  • 动态组合处理链:可以动态地添加或修改处理请求的责任链

  • 灵活性高:可以灵活地分配责任或改变处理顺序

  • 多种处理方式:请求可以被链中的某个对象处理,也可以不被任何对象处理

🚩责任链设计模式的结构

责任链模式主要包含以下部分:

  • Handler(抽象处理者):定义处理请求的接口,通常包含设置下一个处理者的方法和处理请求的方法

  • ConcreteHandler(具体处理者):实现处理请求的具体逻辑,如果不能处理则转发给下一个处理者

  • Client(客户端):创建处理链并向链头的处理者提交请求

🚩责任链设计模式的优缺点

✅ 优点

  • 降低耦合度:请求发送者只需知道链中的第一个处理者

  • 增强灵活性:可以动态地增加或修改处理链

  • 简化对象间的连接:每个处理者只需保持一个指向其后继者的引用

  • 分配责任更灵活:可以自由分配责任或改变责任顺序

❌ 缺点

  • 请求可能不被处理:如果没有处理者能够处理请求,它可能会到达链的末端并被丢弃

  • 性能问题:较长的责任链可能会影响性能,特别是在链的末端才找到处理者时

  • 调试困难:请求的传递过程可能比较复杂,不容易调试

🚩责任链设计模式的Java实现

代码地址:GitHub

  • 创建 抽象主题 Handler接口
/*** @author hanson.huang* @version V1.0* @ClassName Handler* @Description 抽象类定义了处理请求的接口和设置下一个处理者的方法* @date 2025/3/25 15:45**/
public abstract class Handler {protected Handler next;public void setNext(Handler next) {this.next = next;}public abstract void HandlerRequest(int request);
}
  • 创建三个具体的处理者,实现自己的逻辑

    • FuDaoYuan处理者
    /*** @author hanson.huang* @version V1.0* @ClassName FuDaoYuan* @Description FuDaoYuan处理者* @date 2025/3/25 15:47**/
    public class FuDaoYuan extends Handler { // <= 7 审批@Overridepublic void HandlerRequest(int request) {if (request <= 7) {System.out.println("辅导员审批通过");} else {if (next != null) {next.HandlerRequest(request);} else {System.out.println("无法审批");}}}
    }
    
    • YuanZhang处理者
    /*** @author hanson.huang* @version V1.0* @ClassName YuanZhang* @Description YuanZhang处理者* @date 2025/3/25 15:51**/
    public class YuanZhang extends Handler {@Overridepublic void HandlerRequest(int request) {if (request <= 15) {System.out.println("院长审批通过");} else {if (next != null) {next.HandlerRequest(request);} else {System.out.println("无法审批");}}}
    }
    
    • XiaoZhang处理者
    /*** @author hanson.huang* @version V1.0* @ClassName XiaoZhang* @Description XiaoZhang处理者* @date 2025/3/25 15:52**/
    public class XiaoZhang extends Handler {@Overridepublic void HandlerRequest(int request) {if (request <= 30) {System.out.println("校长审批通过");} else {if (next != null) {next.HandlerRequest(request);} else {System.out.println("无法审批");}}}
    }
    
  • 测试责任链模式

/*** @author hanson.huang* @version V1.0* @ClassName ChainOfResponsibilityPattern* @Description 测试责任链模式* @date 2025/3/25 15:54**/
public class ChainOfResponsibilityPattern {public static void main(String[] args) {FuDaoYuan fuDaoYuan = new FuDaoYuan();YuanZhang yuanZhang = new YuanZhang();XiaoZhang xiaoZhang = new XiaoZhang();fuDaoYuan.setNext(yuanZhang);yuanZhang.setNext(xiaoZhang);fuDaoYuan.HandlerRequest(31);fuDaoYuan.HandlerRequest(25);}
}

📌 运行结果

传入31时,显示无法审批
传入25时,校长审批通过

在这里插入图片描述

🚩代码总结

  • Handler 抽象类定义了处理请求的接口和设置下一个处理者的方法

  • FuDaoYuanYuanZhangXiaoZhang 是具体的处理者,实现了自己的处理逻辑

  • ChainOfResponsibilityPattern 类构建了处理链并触发请求

  • 每个处理者如果不能处理当前请求,会将请求传递给链中的下一个处理者

🚩总结

  • 责任链设计模式 通过构建一条处理链来解耦请求发送者和接收者

  • 核心是 让多个对象都有机会处理请求,避免请求发送者与接收者之间的耦合

  • 适用于 多级审批、异常处理、事件传递 等场景

✅ Java源码中的应用场景:

  1. Java Servlet中的FilterChain

    • javax.servlet.FilterChain

    • 多个Filter组成责任链处理HTTP请求

  2. Java异常处理机制:

    • 异常在调用栈中向上传播的过程就是责任链模式的应用
  3. Spring Security的过滤器链:

    • 多个安全过滤器组成责任链处理安全相关逻辑
  4. Netty的ChannelPipeline:

    • 处理器链处理网络事件
  5. AWT/Swing事件处理:

    • 事件在组件层次结构中的传播
  6. Log4j/Logback日志框架:

    • 日志级别过滤和处理的链式结构

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

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

相关文章:

  • 深圳做外贸网站公司网站设计外包合同
  • 网站开发研发工程师岗位职责wordpress 作者插件
  • 网站设计的要求有哪些安徽搜索引擎推广公司
  • 网站界面设计实训报告天津市城乡建设网站
  • 成都做网站百度合作的网盟网站
  • 树莓派做网站wordpress woocommerce那里设置每页商品显示数量
  • 手机网站管理工具怎么在百度上推广自己
  • 网站建设价格请咨询兴田德润盈利网站
  • 出口外贸营销网站网站组网图
  • 免费个人网站建站申请网站后台怎么上传图片产品
  • 网站页面引导怎么做长沙如何做百度的网站推广
  • 自助建站软件排行榜厦门仿站定制模板建站
  • php网站容量网站建设论文致谢
  • 无锡便宜做网站内蒙古建设住房与城乡厅官方网站
  • 池州网站制作公司综述题建设网站需要几个步骤
  • 网站建设服务费属于什么费用做3dh春丽网站叫什么
  • 临安区做网站的公司域名买好后怎么建设网站
  • 哈尔滨市哪里做淘宝网站中华保险网站
  • 如何做网络推广网站网站栏目策划书
  • 怎么快速建网站网站开发现在主要用什么语言
  • 丽水市莲都区建设分局网站杭州百度seo代理
  • wordpress高级企业自适应主题移动网站 图片优化
  • 东莞市外贸网站建设公司浙江省建设监理管理协会网站
  • 好域名做网站wordpress广告
  • 阿里云服务器可以做商业网站化妆培训网站 源码
  • seo 网站地图天津高端网页制作
  • 建站公司 深圳wordpress支持小程序吗
  • 闵行交大附近网站建设云主题 wordpress
  • 网站安全检测网站360借条平台是合法的吗
  • 网站建设网站建设的网络公司无锡手机网站建设