zoukankan      html  css  js  c++  java
  • 十一个行为模式之责任链模式(Responsible Chain Pattern)

    定义:
    将具有相同接口的责任类串行在一起,解耦请求的发送者和处理者。沿着这条链进行请求,直到有对象处理它为止。

    结构图:

    • Handler:抽象处理类,定义了所有责任类处理方法的接口,不同的处理方法在子类中实现。同时持有一个其后续责任类的引用(successor),如果该请求能够被处理,则处理返回;如果不能被处理则转发给后续责任类进行处理。
    • ConcreteHandler:具体处理类,实现了具体处理请求的业务方法。首先应当判断是否具体处理该类的权限,如果有则进行处理,如果没有则转发给继任者。

    注意:

    • 责任链模式并不创建责任链,而是通过其他模式来进行构件,比如使用建造者模式。
    • 单纯的责任链模式有两个要求:一是该请求要么完全由自己处理,要么完全由继任者处理;二是要求该请求必需被一个Handler处理。
    • 不单纯的责任链模式,则不要求上述两个条件。它既可部分由当前类处理,再由继任者处理剩余部分;也可以由继任者重复处理。而且一个事件可以最终不被任何处理者对象接收。

    优点:

    • 被处理的对象无需知道具体被谁处理,不需要知道责任的之间的结构,降低了系统间的耦合。
    • 一个请求处理对象只维护了一个后继者的引用,不需要引用其他所有责任类,如果不能处理直接抛给后继者,降低了责任之间的关联度。
    • 可以动态地添加或者删除责任链,改变一个请求的处理过程,符合“开闭原则”。

    缺点:

    • 如果链较长,则有可能严重影响系统性能,并导致方法调用栈过大。
    • 如果配置不当,很有可能会产生循环链。

    适用场景:

    • 有多个对象可以处理同一请求,而具体哪个对象处理由运行时决定,而被处理的对象不需要关心谁处理。
    • 可以动态地指定一组请求处理类,并且可以动态的管理这些类。

    实例:

    ResponsibleChainPattern.java

  • 相关阅读:
    django_开发报错
    SpringBoot 前后端数据参数交互
    消息队列学习笔记(一)
    2021年调用工商二维码退款查询接口
    2021年调用工商二维码退款接口
    2021年调用工商二维码生成接口及回调接口demo
    调用工商生成二维码接口文档的坑
    使用hutool工具类转换时间
    微信模板消息推送
    pom文件 spring-boot-maven-plugin 爆红
  • 原文地址:https://www.cnblogs.com/zhangfei614/p/6063658.html
Copyright © 2011-2022 走看看