23种设计模式之责任链模式
责任链模式的定义定义: 使多个对象都有机会处理请求,从而避免了请求的发送者和接受者之间的耦合关系. 将这些对象连成一条链,并沿着这条链传递该请求,直到有对象处理它为止 通俗的讲,就是将对请求的处理组成一条链,当请求来时,在链中依次传递,知道找到能够处理此请求的对象 其通用类图如下: 责任链模式的重点是 在"链"上,"链"由多个处理者 ConcreteHandler 组成的 Handler 抽象类代码如下: 抽象的处理者实现三个职责:
具体处理类实现抽象类的方法即可 其中涉及到的三个类:
场景类代码如下: 在实际应用中,一般会有一个封装类对责任链进行封装,直接返回链中的第一个处理者,具体链的设置不需要高层模块关心,这样,更简化了高层模块的调用,减少模块间的耦合,提高系统的灵活性 责任链模式的应用1.责任链模式的优点 责任链模式非常显著的优点就是将请求和处理分开.请求者可以不用知道是谁处理的,处理者可以不用知道请求的全貌,两者解耦,提高系统的灵活性 2.责任链模式的缺点
3.责任链模式的注意事项 链中节点数量需要控制,避免出现超长链的情况,一般的做法是在Handler中设置一个最大节点数量,在setNext方法中判断是否已经超出其阈值,超过则不允许该链建立,避免无意识的破坏系统性能 在上面的例子中,融合了模板方法模式,通过融合模板方法模式,各个实现类只要关注自己的业务逻辑就成了,至于什么事要自己处理,就让父类去决定好了,也就是说父类实现了请求传递的功能,子类实现请求的处理,符合单一职责原则,子类的实现非常简单,责任链的建立也非常灵活. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |