24种设计模式学习笔记之职责链模式

职责链模式--------行为型模式

避免将一个请求的发送者和请求的处理者耦合在一起,让多个对象都有处理请求的机会。

将接受请求的对象连成一条线链并且沿着这条链传递请求,直到有一个对象能够处理它为止。

UML图

1、Handle()、抽象处理类在类中定义了一个success的属性,抽象的处理方法。success是对下家的引用,因为不同的接受对象处理方法不同所以用抽象方法设计处理方法。通过对下个处理对象的引用行出了一条链。

2、ConcreteHandle(),具体的处理类,通过继承或实现抽象处理类,并且实现的对应的请求方法。当请求发送到具体的处理类时,首先进行判断是否自己能够处理该请求,如果可以则执行处理方法,否则将该请求转发给下一个具体处理类。形成一条链!

职责链的优缺点
优点:

职责链模式使得一个对象无需知道是哪一个对象处理其请求,对象仅需要知道该请求会被处理即可,降低了系统的耦合度。
请求处理对象仅需要位置一个指向其后继者的引用。
再给对象分派职责时,职责链可以更多的灵活性。


缺点:

由于一个请求没有明确的接受者,那么就比呢能够保证它一定被处理,该请求可能到最后的末端也不会被处理啦。
对于比较长的职责链,请求的处理可能涉及多个处理对象,系统性能将受到一个定的影响。
如果建链不当,可能会导致循环调用。陷入死循环。
职责链的使用场景
有多个对象处理同一个请求。
在不明确接收者的情况下对多个接收者发出请求。
可动态的指定一组对象为接收者,自己创建审批的人。

猜你喜欢

转载自www.cnblogs.com/xiaoyangxiaoen/p/12401199.html
今日推荐