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

手机网站建设收费荣耀手机商城官方网站售后

手机网站建设收费,荣耀手机商城官方网站售后,网站登录模板,大型企业门户网站能力建设探索与实践文章目录 什么是责任链模式?现实中的例子责任链模式的结构代码示例1. 定义Handler接口2. 实现ConcreteHandler部门经理财务部总经理 3. 客户端代码输出结果 责任链模式的优缺点优点缺点 总结 在软件开发中,我们经常会遇到这样的场景:一个请求…

文章目录

  • 什么是责任链模式?
  • 现实中的例子
  • 责任链模式的结构
  • 代码示例
    • 1. 定义Handler接口
    • 2. 实现ConcreteHandler
      • 部门经理
      • 财务部
      • 总经理
    • 3. 客户端代码
    • 输出结果
  • 责任链模式的优缺点
    • 优点
    • 缺点
  • 总结

在软件开发中,我们经常会遇到这样的场景:一个请求需要经过多个处理步骤,每个步骤可能由不同的对象处理。如果将这些处理逻辑硬编码在一起,代码会变得臃肿且难以维护。责任链模式(Chain of Responsibility Pattern)正是为了解决这一问题而诞生的。本文将详细介绍责任链模式,并通过现实中的例子和代码示例帮助你理解这一设计模式。

什么是责任链模式?

责任链模式是一种行为设计模式,它允许多个对象有机会处理请求,从而避免请求的发送者与接收者之间的耦合。责任链模式的核心思想是:

  • 将多个处理对象组成一条链。
  • 请求沿着这条链传递,直到某个对象处理它为止。

责任链模式常用于:

  • 请求的处理流程需要动态调整。
  • 请求的处理逻辑分散在多个对象中。
  • 请求的处理顺序需要灵活配置。

现实中的例子

想象一下,你在公司提交了一份报销申请。这份申请需要经过多个部门的审批:

  1. 部门经理:审核金额是否合理。
  2. 财务部:核对发票和金额。
  3. 总经理:最终审批。

每个部门都有权处理你的申请,但如果某个部门无法处理,申请会被传递给下一个部门。这就是责任链模式在现实中的应用。


责任链模式的结构

责任链模式的核心组件包括:

  1. Handler(处理者):定义一个处理请求的接口,通常包含一个指向下一个处理者的引用。
  2. ConcreteHandler(具体处理者):实现处理请求的具体逻辑。
  3. Client(客户端):创建责任链,并向链上的第一个处理者发送请求。

以下是责任链模式的UML类图:

在这里插入图片描述

代码示例

以下是一个简单的Java代码示例,模拟报销审批流程:

1. 定义Handler接口

public interface Handler {void setNext(Handler handler); // 设置下一个处理者void handle(String request);   // 处理请求
}

2. 实现ConcreteHandler

部门经理

public class ManagerHandler implements Handler {private Handler nextHandler;@Overridepublic void setNext(Handler handler) {this.nextHandler = handler;}@Overridepublic void handle(String request) {if (request.contains("金额合理")) {System.out.println("部门经理:审批通过");} else if (nextHandler != null) {System.out.println("部门经理:无法处理,传递给下一级");nextHandler.handle(request);}}
}

财务部

public class FinanceHandler implements Handler {private Handler nextHandler;@Overridepublic void setNext(Handler handler) {this.nextHandler = handler;}@Overridepublic void handle(String request) {if (request.contains("发票核对通过")) {System.out.println("财务部:审批通过");} else if (nextHandler != null) {System.out.println("财务部:无法处理,传递给下一级");nextHandler.handle(request);}}
}

总经理

public class CEOHandler implements Handler {@Overridepublic void setNext(Handler handler) {// 总经理是最后一环,没有下一个处理者}@Overridepublic void handle(String request) {System.out.println("总经理:最终审批通过");}
}

3. 客户端代码

public class Client {public static void main(String[] args) {// 创建处理者Handler manager = new ManagerHandler();Handler finance = new FinanceHandler();Handler ceo = new CEOHandler();// 构建责任链manager.setNext(finance);finance.setNext(ceo);// 发送请求manager.handle("金额合理,发票核对通过");}
}

输出结果

部门经理:审批通过

责任链模式的优缺点

优点

  1. 解耦:请求的发送者和处理者之间没有直接依赖。
  2. 灵活性:可以动态调整责任链的顺序或增加新的处理者。
  3. 单一职责:每个处理者只负责自己的逻辑,符合单一职责原则。

缺点

  1. 性能问题:如果责任链过长,可能会影响性能。
  2. 调试困难:请求的处理流程分散在多个对象中,调试时可能不太直观。

总结

责任链模式通过将多个处理对象组成一条链,使请求能够沿着链条流动,直到被某个对象处理为止。它非常适合处理需要多个步骤的请求,例如审批流程、过滤器链等。通过本文的代码示例和现实中的例子,相信你已经对责任链模式有了更深入的理解。

如果你在开发中遇到类似的场景,不妨尝试使用责任链模式,让代码更加灵活和可维护!


关于作者
我是在Java开发领域苟且偷生的程序员,专注于高质量代码的设计与实现。如果你对Java技术感兴趣,欢迎关注我的博客,我们一起学习进步!


文章转载自:

http://94OxvQt1.cnbdn.cn
http://oWTSxRO6.cnbdn.cn
http://ecKEzEQb.cnbdn.cn
http://vKprPfqr.cnbdn.cn
http://IrZymClj.cnbdn.cn
http://sbb4dVs8.cnbdn.cn
http://ynZbhlbs.cnbdn.cn
http://dr5UE1Zx.cnbdn.cn
http://NTXGPWfG.cnbdn.cn
http://fXDksUo7.cnbdn.cn
http://yJJKF0vH.cnbdn.cn
http://5toR9pt3.cnbdn.cn
http://qyjjMUMo.cnbdn.cn
http://hzL0nvgI.cnbdn.cn
http://Smorceal.cnbdn.cn
http://8pFDOqF4.cnbdn.cn
http://rmlXpuuC.cnbdn.cn
http://WMrSBKim.cnbdn.cn
http://SLWoOgoN.cnbdn.cn
http://ijklzYch.cnbdn.cn
http://wUV4GNUz.cnbdn.cn
http://4jdv4LJ3.cnbdn.cn
http://Uu1BF4tU.cnbdn.cn
http://tuBwP69k.cnbdn.cn
http://lKouCNAA.cnbdn.cn
http://xbg5pG6X.cnbdn.cn
http://mMv0yRGf.cnbdn.cn
http://k4dLiMKf.cnbdn.cn
http://bWh6CBbg.cnbdn.cn
http://yeCy8gkZ.cnbdn.cn
http://www.dtcms.com/wzjs/644575.html

相关文章:

  • 菏泽网站建设推广价格好的平面设计网站有哪些
  • 网站如何转移到新的空间服务器上小程序注册公司
  • 做营销网站哪家好自己做网站打开很卡
  • 石家庄制作网站的公司哪家好信息流广告投放工作内容
  • 网站建设 软件有哪些内容服务号微网站怎么做的
  • 浙江网站建设推荐静态页面网站怎么做
  • 太原免费建站沈阳突发事件刚刚
  • 黄冈市建设局网站东莞飞天网站设计公司
  • 广州h5网站制作怎么查网站的备案号
  • 个人网站也要备案吗教育培训手机网站模板下载
  • 长沙律师网站建设网站关键词多长
  • dedecms免费网站模板建设银行什么网站可买手表
  • 网站上删除信息如何做入返晋人员登记网页怎么制作
  • 青岛做网站的好公司一家做运动鞋的网站
  • 对做网站有什么建议网站的发展趋势
  • 猪八戒网站做私活赚钱吗福建seo优化
  • 档案网站建设论文大型网站建设多少钱
  • 内部门户网站建设方案网络服务列表在哪里
  • 有免费的微网站制作吗广州哪里能做英文版核酸
  • 宝应网站建设wordpress 免费主题推荐
  • 郑州网站建设开发公司免费网站模板源码下载
  • wordpress 国产插件北京网站优化什么价格
  • thinkphp企业网站开发成都房产网站建设
  • 网站源码 带后台建设网站的模板
  • 网站开发视频 百度云wordpress可以注册了
  • 个人做网站接装修活哪个网站好成都小程序开发价格
  • 宁波专业网站定制制作服务在虚拟主机上建设多个网站
  • 做视频网站要什么格式网站开发怎么使用维语
  • 上海城乡建设网站证件查询建设网点查询附近
  • 如何做木工雕刻机网站曲阜住房城乡建设局网站