前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Design Patterns 24 - 职责链模式

Design Patterns 24 - 职责链模式

作者头像
Reck Zhang
发布2021-08-11 11:09:57
1940
发布2021-08-11 11:09:57
举报
文章被收录于专栏:Reck Zhang

职责链模式

职责链模式, 使多个对象都有机会处理请求, 从而避免请求的发送者和接受者之间的耦合关系. 将这个对象连成一条链, 并沿着这条链传递该请求, 直到有一个对象处理为止.

代码语言:javascript
复制
abstract class Handler {
    protected Handler successor;

    public void SetSuccessor(Handler successor) {
        this.successor = successor;
    }

    public abstract void HandlerRequest(int request);
}

class ConcreteHandler1 : Handler {
    public override void HandlerRequest(int request) {
        if(request >= 0 && request < 10) {
            // todo
        }
        else if(successor != null) {
            successor.HandlerRequest(request);
        }
    }
}

class ConcreteHandler2 : Handler {
    public override void HandlerRequest(int request) {
        if(request >= 10 && request < 20) {
            // todo
        }
        else if(successor != null) {
            successor.HandlerRequest(request);
        }
    }
}

public void Main(string[] agrs) {
    Handler handler1 = new ConcreteHandler1();
    Handler handler2 = new ConcreteHandler2();
    handler1.SetSuccessor(handler2);

    int[] requests = {2, 5, 14, 19};

    foreach(int request in requests) {
        handler1.HandlerRequest(request);
    }
}

接受者和发送者都没有对方的明确信息, 且链中的对象自己也并不知道链的结构. 结构是职责链可简化对象的相互连接, 他们仅需保持一个指向其后继者的引用, 而不需保持他所有的候选接受者的引用.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-02-22,如有侵权请联系 cloudcommunity@tencent.com 删除

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

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

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

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