美文网首页
责任链模式实战

责任链模式实战

作者: 奋斗的韭菜汪 | 来源:发表于2020-07-10 15:48 被阅读0次

相关关联:
如何优化审批流(责任链模式结合建造者模式);
代理模式实战;

定义:是将链中每一个节点看做是一个对象,每个节点处理的请求均不同,且内部自动维护一个下一个节点对象。当一个请求从链式的首段出发时,会沿着链的路径依次传递给每一个节点对象,直至对象处理完这个请求为止(行为型模式)
使用场景:1、对个对象处理同一个请求,单具体由那个对象处理则在运行时动态决定;
2、在不明确指定接受者的情况下,向多个对象中的一个提交一个请求
3、可动态指定一组对象处理请求
核心代码摘录:

public abstract class Handler<T> {

    protected Handler next;
    //内部自动维护一个下一个节点对象
    public void setNext(Handler source){
        this.next = source;
    }

    public abstract void doHandler(User user);

    //记住这个内部类的写法(结合建造者模式优化代码)
    public static class Builder<T>{
        private Handler<T> head;
        private Handler<T> tail;
        public Builder<T> addHandler(Handler handler){
            if (this.head == null){
                //链为空,头尾都为handler
                this.head = this.tail = handler;
            } else {
                //从尾部开始追加,当前尾部的next赋值为handler
                this.tail.next = handler;
                //尾部赋值为handler
                this.tail = handler;
            }
            return this;
        }
        public Handler builder(){
            return this.head;
        }
    }
}

代码实现:https://github.com/WilliamEvan/my-learning.git/chain

相关文章

网友评论

      本文标题:责任链模式实战

      本文链接:https://www.haomeiwen.com/subject/gmqmcktx.html