责任链模式

    公司发生的各种各样的事情,都需要有人来处理。比如,一个底层员工接到了一个新业务。首先他会判断这个业务的重要性和自己的职责,看看自己处理就好,还是该上报给自己的领导--部门经理。部门经理如果接到了这个消息,他也会做同样的事情,一直到公司的最高决策者都在这个链条中。
    责任链模式就是处理这类事物模型的设计模式,通过把可能需要参与到处理中的对象,加入到这个链条中,交付任务的人不需要关心这个任务在何时何地由谁来处理,他只需要交付出去就可以了。
     职责链模式:避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。
    简单的责任链模式的结构如下:

    Handler为抽象的处理者,它定义了处理方法,由不同的具体实现者去实现。同时,它还包含了一个对类型为Handler本身的引用。这个引用指向的是当前处理者在责任链中的下一个处理者。通过这种方式,可以灵活的组成直线型的链条或环形链条。如果对Handler稍作改动还可以组成树形甚至更复杂的责任链。
    根据责任链中每个节点的职责模型不同,责任链可以分为单纯职责链和不纯职责链。
    单纯职责链指的是每个节点要么把任务交给下一个节点,要么自己全部处理完成。
    不纯职责链指的是,一个节点对当前任务可能只处理自己职责内的一部分工作,然后将任务继续向下推。即一个任务可能由多个节点共同完成。
    
    总结:
        优点:
  • 任务交付者无需关心任务最终怎样被处理,将客户端和处理逻辑解耦
  • 职责链具有很大的灵活性,可以组建很复杂的模型,而且可以方便的动态修改
  • 模型修改时,只需改变节点相互间的引用,不比修改节点代码,复合开闭原则
        缺点:
  • 任务可能没有合适处理节点,导致不被处理
  • 如果职责链较长,不便于调试
  • 可能造成死循环
        适用场景:
  • 一个任务有多个处理者,而不像交付者去关心具体由谁来处理
  • 动态的改变一些处理者的次数或结构
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值