设计模式——责任链模式
创始人
2024-11-11 14:37:19
0

设计模式——责任链模式

    • 一、责任链模式的概念
    • 二、责任链模式的结构
    • 三、责任链模式的优势
    • 四、Java 中责任链模式的实现示例
    • 五、责任链模式的应用场景
    • 六、总结

在 Java 编程中,责任链模式是一种非常有用的设计模式。它能够有效地处理请求的发送者和接收者之间的解耦,为复杂的业务逻辑提供了清晰且灵活的解决方案。

一、责任链模式的概念

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

二、责任链模式的结构

抽象处理者(Handler): 定义了处理请求的接口,包含一个指向下一个处理者的引用。
具体处理者(ConcreteHandler): 实现抽象处理者的接口,处理自己职责范围内的请求,如果无法处理则将请求传递给下一个处理者。

三、责任链模式的优势

降低耦合度: 请求的发送者无需知道具体由哪个对象来处理请求,只需将请求发送到责任链上即可。
增强灵活性: 可以方便地动态添加或删除处理者,改变责任链的结构和顺序。
提高可扩展性: 新的处理者可以轻松地加入到责任链中,而不会影响现有的代码。

四、Java 中责任链模式的实现示例

下面是一个简单的责任链模式的Java实现示例:

import java.util.ArrayList; import java.util.List;  // 抽象处理者 abstract class Handler {     protected Handler successor;      public void setSuccessor(Handler successor) {         this.successor = successor;     }      public abstract void handleRequest(int request); }  // 具体处理者1 class ConcreteHandler1 extends Handler {     @Override     public void handleRequest(int request) {         if (request >= 0 && request < 10) {             System.out.println("ConcreteHandler1 handled request: " + request);         } else if (successor != null) {             successor.handleRequest(request);         }     } }  // 具体处理者2 class ConcreteHandler2 extends Handler {     @Override     public void handleRequest(int request) {         if (request >= 10 && request < 20) {             System.out.println("ConcreteHandler2 handled request: " + request);         } else if (successor != null) {             successor.handleRequest(request);         }     } }  // 客户端 public class Client {     public static void main(String[] args) {         Handler handler1 = new ConcreteHandler1();         Handler handler2 = new ConcreteHandler2();          // 构建责任链         handler1.setSuccessor(handler2);          // 发送请求         int[] requests = {5, 15, 25};         for (int request : requests) {             handler1.handleRequest(request);         }     } } 

输出:

ConcreteHandler1 handled request: 5 ConcreteHandler2 handled request: 15 

说明:
抽象处理者 (Handler) 定义了一个处理请求的方法 handleRequest。
具体处理者 (ConcreteHandler1, ConcreteHandler2) 实现了 handleRequest 方法,每个处理者都会检查请求是否属于它负责的范围,如果是,则处理请求;如果不是,则将请求传递给后继处理者。
客户端 创建了处理者对象,并构建了一个责任链。然后发送请求到链的第一个处理者。

五、责任链模式的应用场景

日志处理: 不同级别的日志可以由不同的处理者进行处理。
审批流程: 如请假审批、报销审批等,不同的审批级别由不同的人员处理。
责任链模式非常适合处理 多层级 的请求,例如权限验证、异常处理等场景。通过动态地构建处理者链,可以很容易地扩展或修改处理逻辑。

六、总结

责任链模式在 Java 编程中是一种强大的工具,它能够帮助我们构建更灵活、可扩展和低耦合的系统。通过合理地设计责任链,我们可以更好地处理复杂的业务逻辑,提高代码的可维护性和可复用性。

相关内容

热门资讯

长期以来!天天开心王国有没有挂... 长期以来!天天开心王国有没有挂,本来是真的辅助神器(了解有挂)-哔哩哔哩;1、下载好天天开心王国有没...
目前!杭州都莱大菠萝插件,确实... 目前!杭州都莱大菠萝插件,确实真的有辅助器(有挂方式)-哔哩哔哩1、操作简单,无需杭州都莱大菠萝插件...
据监测!微信微乐辅助器下载,竟... 据监测!微信微乐辅助器下载,竟然是真的辅助平台(有挂实锤)-哔哩哔哩1、超多福利:超高返利,海量正版...
随着!新玄龙小程序辅助,其实有... 随着!新玄龙小程序辅助,其实有挂辅助器(有挂详细)-哔哩哔哩一、新玄龙小程序辅助游戏安装教程牌型概率...
网友热议!同城游辅助器,真是有... 网友热议!同城游辅助器,真是有挂辅助脚本(有挂存在)-哔哩哔哩1、下载好同城游辅助器透视辅助下载之后...
针对!微乐小程序游戏破解器,一... 针对!微乐小程序游戏破解器,一贯真的有辅助安装(有挂教学)-哔哩哔哩1、让任何用户在无需微乐小程序游...
这一问题亟待解决!广东闲来辅助... 这一问题亟待解决!广东闲来辅助神器免费版,一贯是真的辅助下载(有人有挂)-哔哩哔哩暗藏猫腻,小编详细...
截至目前!透视辅助功能插件,好... 截至目前!透视辅助功能插件,好像是真的辅助挂(今日头条)-哔哩哔哩;一、透视辅助功能插件可以开透视的...
这一现象值得深思!都莱软件安装... 这一现象值得深思!都莱软件安装辅助,确实是真的辅助工具(有挂方法)-哔哩哔哩1、任何都莱软件安装辅助...
据了解!微信小程序微乐游戏辅助... 据了解!微信小程序微乐游戏辅助,一直真的有辅助脚本(有挂神器)-哔哩哔哩微信小程序微乐游戏辅助是不是...