行为型模式—— 职责链模式(Chain of Responsibility Pattern)

开头

    今天我们学习一下职责链模式,大家有没有发现我写了这么多的博客,都有一个共同的特点,对于一个新概念的东西,我们可能不理解它是干什么用的,但是我们可以根据它的词义来给来解析一下,大脑里首先有一个对它的看法,然后根据前后的对比,这样会更加了解对一个新概念的认识,我们拿今天的职责链模式解析一下,职责链,职责链,首先它是一条链,那么肯定有人担任职责,既然是一条链,肯定担任这个职责的人不只有一个,到底什么是职责链模式的,下面我来展示一幅思维导图:(请假流程根据学习要求进行了改动,博友们不要认为这就是请假的流程哦,出现问题,博主不负任何责任吐舌头



内容

    例子:相信大家都请过假,如何请假呢?按照以前写代码的要求,如果请假时间在两个小时以内给纪委请假,否则给校长请假,如果请假时长超过24小时,需要给米老师请假。是不是很长很长的If语句。可见请假时长不同,需要准假的人不同,但是他们共同负责请假的职责。如果再增添某一个CEO的人,他负责3天到7天以内的假,是不是我们还需要更改if语句中的代码,这样就违反了面向对象程序设计中的开闭原则。但是职责链模式可以解决这个问题,它将不同的处理者,分为多个独立的类,降低类请求端和接收端的耦合程度。

   职责链模式大致可以分为两大角色:Handler(抽象处理者)、ConcreteHandler(具体处理者)

Handler(抽象处理者):所有具体处理这接口,定义抽象处理方法。


ConcreteHandler(具体处理者):(1)处理请求(2)转发请求



总结

职责链模式(Chain of Responsibility  Pattern)避免请求发送者与接收者耦合在一起,让多个对象都有可能接收请求,将这些对象连接成一条链,并且沿着这条链传递请求,直到有对象处理它为止。职责链模式是一种对象行为型模式。

优点:

          (1)请求者不需要知道是谁在处理自己的问题,将请求者和接收者分开,降低了耦合度。

          (2)不同的接收者具有自己独立的类,是系统更加灵活。

          (3)系统中增加新的具体请求处理者不需要更改系统代码,符合开闭原则

缺点:

          (1)请求没有明确的接收者,该请求可能不会被处理。

          (2)所有的接收者类都要判断一下请求,如果职责链过长,请求的对象过多,影响系统性能

适用环境:

         (1)一个请求需要多个对象处理,例如请假系统,且存If—else语句等

         (2)客户端只需要发送请求,无须关心请求的处理对象是谁以及如何处理的。


   关于职责链的介绍就先到这里,如果本篇博客对于初学者的您有一定的帮助,记得给小编点赞哦。


猜你喜欢

转载自blog.csdn.net/fjxcsdn/article/details/80522658
今日推荐