首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常用设计模式——责任链模式

常用设计模式——责任链模式

作者头像
用户5325874
发布2020-04-13 18:53:36
4150
发布2020-04-13 18:53:36
举报

责任链模式

责任链模式(Chain of Responsibility Pattern)是一种常见的行为模式。

使多个对象都有处理请求的机会,从而避免了请求的发送者和接收者之间的耦合关系。将这些对象串成一条链,并沿着这条链一直传递该请求,直到有对象处理它为止。

责任链模式的重点在“链上”,由一条链去处理相似的请求,在链中决定谁来处理这个请求,并返回相应的结果。

角色

抽象处理者(Handler)角色:

该角色对请求进行抽象,并定义一个方法来设定和返回对下一个处理者的引用。

具体处理者(Concrete Handler):

该角色接到请求后,**可以选择将请求处理掉,或者将请求传给下一个处理者。**由于具体处理者持有对下一个处理者的引用,因此,如果需要,处理者可以访问下一个处理者。

示例

/**
 * 抽象处理器
 */
public abstract class Handler {

    //下一个处理器
    private Handler nextHandler;

    //处理方法
    public abstract void handleRequest();

    public Handler getNextHandler() {
        return nextHandler;
    }

    public void setNextHandler(Handler nextHandler) {
        this.nextHandler = nextHandler;
    }

}
/**
 * 具体处理器.
 */
public class ConcreteHandler extends Handler {

    @Override
    public void handleRequest() {

        // 当前处理器处理
        System.out.println(this.toString()+"处理器处理");

        // 下一个处理器处理
        if (getNextHandler()!=null){
            getNextHandler().handleRequest();
        }
    }

}
public class Client {

    public static void main(String[] args) {

        Handler h1 = new ConcreteHandler();
        Handler h2 = new ConcreteHandler();
        // h1的下一个处理器是h2
        h1.setNextHandler(h2);

        h1.handleRequest();
    }
}

参考 https://www.cnblogs.com/aeolian/p/8888958.html

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 责任链模式
    • 角色
      • 示例
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档