欲望的出口与数字时代的深夜慰藉:解锁高效获取的终极逻辑

核心内容摘要

洞见“78强”:时代的弄潮儿,未来已来
9.1樱花盛放,成品PPT大片,省时高效,点亮你的每一次展示!

亚洲在线:连接世界,点亮未来的数字脉络

责任链模式 (Chain of Responsibility Pattern)什么是责任链模式责任链模式是一种行为型设计模式它允许你将请求沿着处理者链传递直到有一个处理者能够处理该请求。

简单来说责任链模式就是踢皮球一个处理不了就传给下一个。

生活中的例子想象一下审批流程员工请假 → 部门经理 → 人事经理 → 总经理客服系统一级客服 → 二级客服 → 技术支持异常处理try → catch → finally为什么需要责任链模式传统方式的问题// 使用if-else处理if(level

{manager

handle();}elseif(level

{manager

handle();}elseif(level

{manager

handle();}问题代码臃肿大量if-else导致代码臃肿难以扩展新增处理者需要修改代码耦合度高客户端与所有处理者耦合责任链模式的优势// 使用责任链handler

setNext(handler

;handler

setNext(handler

;handler

handle(request);优势解耦合发送者和接收者解耦灵活扩展可以灵活地添加或删除处理者动态组合可以动态地组合处理者链责任链模式的结构┌─────────────────────┐ │ Handler │ 处理者接口 ├─────────────────────┤ │ - next: Handler │ │ setNext(): void │ │ handle(): void │ └──────────┬──────────┘ │ 继承 ├──┬──────────────────┬──────────────┐ │ │ │ ┌──────────┴──────┐ ┌───────────┴───────┐ ┌───┴────────┐ │ ConcreteHandler1│ │ ConcreteHandler2 │ │ ... │ 具体处理者 ├─────────────────┤ ├───────────────────┤ ├────────────┤ │ handle() │ │ handle() │ │ │ └─────────────────┘ └───────────────────┘ └────────────┘代码示例

定义处理者接口/** * 抽象处理者请假审批 */publicabstractclassLeaveApproval{protectedLeaveApprovalnext;protectedStringname;publicLeaveApproval(Stringname){this.namename;}publicvoidsetNext(LeaveApprovalnext){this.nextnext;}/** * 处理请假请求 * param days 请假天数 */publicabstractvoidhandle(intdays);}

定义具体处理者/** * 具体处理者主管 */publicclassSupervisorextendsLeaveApproval{publicSupervisor(Stringname){super(name);}Overridepublicvoidhandle(intdays){if(days

{System.out.println(name批准了days天的请假);}elseif(next!null){next.handle(days);}else{System.out.println(无人能处理days天的请假);}}}/** * 具体处理者经理 */publicclassManagerextendsLeaveApproval{publicManager(Stringname){super(name);}Overridepublicvoidhandle(intdays){if(days

{System.out.println(name批准了days天的请假);}elseif(next!null){next.handle(days);}else{System.out.println(无人能处理days天的请假);}}}/** * 具体处理者总监 */publicclassDirectorextendsLeaveApproval{publicDirector(Stringname){super(name);}Overridepublicvoidhandle(intdays){if(days

{System.out.println(name批准了days天的请假);}elseif(next!null){next.handle(days);}else{System.out.println(无人能处理days天的请假);}}}/** * 具体处理者CEO */publicclassCEOextendsLeaveApproval{publicCEO(Stringname){super(name);}Overridepublicvoidhandle(intdays){if(days

{System.out.println(name批准了days天的请假);}else{System.out.println(无人能处理days天的请假);}}}

使用责任链/** * 责任链模式测试类 * 演示如何使用责任链模式处理请假审批 */publicclassChainOfResponsibilityTest{publicstaticvoidmain(String[]args){System.out.println( 责任链模式测试 \n);// 创建处理者LeaveApprovalsupervisornewSupervisor(主管);LeaveApprovalmanagernewManager(经理);LeaveApprovaldirectornewDirector(总监);LeaveApprovalceonewCEO(CEO);// 设置责任链supervisor.setNext(manager);manager.setNext(director);director.setNext(ceo);// 测试不同天数的请假System.out.println(--- 请假1天 ---);supervisor.handle(

;System.out.println(\n--- 请假3天 ---);supervisor.handle(

;System.out.println(\n--- 请假7天 ---);supervisor.handle(

;System.out.println(\n--- 请假15天 ---);supervisor.handle(

;System.out.println(\n--- 请假35天 ---);supervisor.handle(

;System.out.println(\n 责任链模式的优势 );System.out.println(

解耦合发送者和接收者解耦);System.out.println(

灵活扩展可以灵活地添加或删除处理者);System.out.println(

动态组合可以动态地组合处理者链);System.out.println(

简化代码简化客户端代码);System.out.println(\n 实际应用场景 );System.out.println(

审批流程请假审批、报销审批);System.out.println(

异常处理异常处理链);System.out.println(

日志处理日志处理链);System.out.println(

事件处理事件处理链);}}责任链模式的优点解耦合发送者和接收者解耦灵活扩展可以灵活地添加或删除处理者动态组合可以动态地组合处理者链简化代码简化客户端代码责任链模式的缺点性能问题请求可能沿着链传递多次调试困难难以追踪请求的处理过程链断裂如果链断裂请求可能无法被处理适用场景多个处理者有多个对象可以处理请求不确定处理者不确定哪个对象可以处理请求动态指定需要动态指定处理者常见应用场景审批流程请假审批、报销审批异常处理异常处理链日志处理日志处理链使用建议多个处理者使用责任链模式不确定处理者使用责任链模式单一处理者直接使用即可

注意事项⚠️ 责任链模式虽然有用但要注意不要让链太长影响性能确保链不会断裂

17c.com在线观看-17c.com在线观看应用

百度百家号客服电话人工服务

123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123 123