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

电影资源网站开发厦门加盟网站建设

电影资源网站开发,厦门加盟网站建设,免费的小程序商店,网页设计简介1.什么是责任链 责任链模式#xff08;Chain of Responsibility Pattern#xff09;是一种行为设计模式#xff0c;它允许多个对象有机会处理请求#xff0c;从而避免请求的发送者和接收者之间的耦合关系。每个收到请求的对象要么处理该请求#xff0c;要么将它传递给链中…1.什么是责任链 责任链模式Chain of Responsibility Pattern是一种行为设计模式它允许多个对象有机会处理请求从而避免请求的发送者和接收者之间的耦合关系。每个收到请求的对象要么处理该请求要么将它传递给链中的下一个对象。   责任链模式的优点 降低耦合度: 发送者无需知道请求的接收者是谁也不需要知道请求如何被处理。接收者也不需要知道其他接收者的存在。 增强给请求的处理灵活性: 可以动态地增删处理者。处理者可以根据条件决定是否处理请求。 简化了对象: 请求的发送者和接收者之间无需建立直接联系。 责任链模式的缺点 可能导致难以调试: 如果链很长可能会导致难以追踪请求的处理过程。 可能不易于维护: 当链的结构变得复杂时维护起来可能比较困难。 2.使用场景 责任链的使用场景还是比较多的 多条件流程判断权限控制 ERP 系统流程审批总经理、人事经理、项目经理 Java 过滤器的底层实现 Filter 多级审批如报销审批、请假申请等。 异常处理不同类型的异常可以被不同的处理者捕获和处理。 过滤器在网络通信中多个过滤器可以处理同一个请求或响应。 如果不使用该设计模式那么当需求有所改变时就会使得代码臃肿或者难以维护例如下面的例子。 3.反例 假设现在又一个审批流程进入下一个审批流程的条件是当前审批流程审批通过 组长审批通过--主管审批通过--项目经理审批通过 那么代码可以这样写 //第一步 public class GroupLeaderHandler {public Boolean handler(){System.out.println(第一步--GroupLeaderHandler);return true;} }//第二步 public class ManagerHandler {public Boolean handler(){System.out.println(第二步--ManagerHandler);return true;} }//第三步 public class ProjectManagerHandler {public Boolean handler(){System.out.println(第三步--ProjectManager这是最后一步啦);return true;} }//客户端 publicclass HandlerClient {public static void main(String[] args) {GroupLeaderHandler groupLeaderHandler new GroupLeaderHandler();ManagerHandler managerHandler new ManagerHandler();ProjectManagerHandler projectManagerHandler new ProjectManagerHandler();boolean groupLeaderFlag groupLeaderHandler.handler();if(groupLeaderFlag){boolean managerFlag managerHandler.handler();if(managerFlag){projectManagerHandler.handler();}}} } 如果审批的人10个甚至更多我们的代码可能就会写成这样 if(第1步审核通过){// 第2步审核if(第2步审核通过){// 第3步审核if(第3步审核通过){// 第4步审核if(第4步审核通过){// 第5步审核if(第5步审核通过){// 第6步审核if(第6步审核通过){//...}}} }} } 这种代码不仅冗余并且当我们要将某两关进行调整时对代码的改动非常大这种操作的风险是很高的因此这是一种非常糟糕的写法。 4.使用责任链和工厂进行改造 /*** 审核接口也可以使用抽象类*/ public interface Approver {void handler();void setNextApprover(Approver nextApprover); }/*** 行政部*/ public class AdministrationDepartment implements Approver{private Approver nextApprover;Overridepublic void handler() {System.out.println(行政部审批通过);if (nextApprover ! null) {nextApprover.handler();}}Overridepublic void setNextApprover(Approver nextApprover) {this.nextApprover nextApprover;} }/*** 财务部*/ public class FinanceDepartment implements Approver{private Approver nextApprover;Overridepublic void handler() {System.out.println(财务部审批通过);if (nextApprover ! null) {nextApprover.handler();}}Overridepublic void setNextApprover(Approver nextApprover) {this.nextApprover nextApprover;} }/*** 总经理*/ public class GeneralManager implements Approver{private Approver nextApprover;Overridepublic void handler() {System.out.println(总经理审批通过);if (nextApprover ! null) {nextApprover.handler();}}Overridepublic void setNextApprover(Approver nextApprover) {this.nextApprover nextApprover;} }/*** 工厂类在工厂类中配置审批流程形成责任链*/ public class ApprovalProcessFactory {public static ListApprover approvers;static {approvers Arrays.asList(new AdministrationDepartment(),new FinanceDepartment(), new GeneralManager(), new CEO());}public static Approver createApprovalProcess() {// 将处理器按顺序链接成责任链for (int i 0; i approvers.size() - 1; i) {approvers.get(i).setNextApprover(approvers.get(i 1));}return approvers.get(0);} }//测试类 public class ApprovalProcessTest {public static void main(String[] args) {Approver approvalProcess ApprovalProcessFactory.createApprovalProcess();approvalProcess.handler();} }
http://www.w-s-a.com/news/186966/

相关文章:

  • 广州建站服务怎么让客户做网站
  • 南京手机网站设计公司wordpress导航页
  • 娄底市建设网站app网站开发小程序
  • 刷粉网站推广免费网站建设找王科杰信誉
  • 投标建设用地是哪个网站微信小程序多少钱
  • 做玄幻封面素材网站我国数字经济报告
  • 手机网站返回跳转wordpress带颜色的文字
  • 微信群领券网站怎么做创意广告图片
  • 跟我一起做网站嘉兴做网站哪家好
  • 上海知名建站公司山东住房和建设庭网站
  • 深圳市城乡建设部网站首页平台设计方案怎么做
  • 深圳美食教学网站制作wordpress列表图显示标题
  • 怎么做网址导航网站沈阳高端做网站建设
  • 棋牌网站开发需要多少钱整网站代码 带数据 免费 下载
  • 网站建设 sql 模版猎头用什么网站做单
  • 河北保定建设工程信息网站wordpress 远程缓存
  • 手机网站开发之列表开发win7网站开发教程
  • 楚雄市住房和城乡建设局网站廊坊企业网站建设
  • 东莞规划局官方网站wordpress添加文章页不显示图片
  • 做企业网站要哪些人员百度商城网站建设
  • c语言软件开和网站开发区别多产品的网站怎么做seo
  • 收益网站制作移动互联网应用的使用情况表格
  • 专业的手机网站建设公司哪家好同城信息网站建设
  • 参与做网站的收获国外网站服务器建设
  • 西宁网站建设报价cu君博规范网站kv如何做
  • 毕业室内设计代做网站广东建设监理协会网站个人账号
  • 百度推广点击收费标准自己如何做网站优化
  • 安徽省建设监理网站广州澄网站建设公司
  • 做简历用什么网站俄罗斯搜索引擎浏览器官网入口
  • dw里响应式网站怎么做制作网站需要多少时间