【设计模式】流式规则过滤神器-责任链模式

类型:行为型设计模式

输入一个请求,责任链模式将多个处理器节点连接成链,请求传入后依次进行校验处理,如果被拦截则由该处理器直接返回结果,否则传递至下一处理器节点,直到最后一个处理器节点处理完毕。

组成结构

责任链模式包括以下几个基本结构:

  1. 处理者(Handler):声明所有具体处理者的通用接口。习惯在 IxxxChain 中定义每个处理者都要实现的功能接口,在 IxxxChainArmory 中定义关于责任链的接口【appendNext() & next() 】;
  2. 基础处理者(Base Handler):所有处理者共用的样本代码,是抽象实现类。在这里面先实现责任链相关接口的功能;
  3. 具体处理者(Concrete Handlers):处理请求的实际代码。
  4. 客户端(Client):可根据程序逻辑一次性或者动态地生成链。习惯为 xxxChainFactory 。

实现流程

1.写责任链功能接口(IxxxChain)及装配接口(IxxxChainArmory);

      2.用抽象类先将装配接口(IxxxChainArmory)的功能实现;

      3.写每个责任链节点的具体功能(action())实现;

      4.写一个责任链工厂DefaultActivityChainFactory;

      • 通过Spring依赖注入自动装配impl中的接口实现类;
        • 给impl中的实现类添加 @Component 注解,这样 IActionChain 的实现类已经被 Spring 管理,
        • 在类中只有一个构造器的情况下,Spring 会尝试通过依赖注入来实例化该构造器。可以通过类型 IActionChain 获取到 impl 中的实现类。
      • 提供责任链节点枚举;
      • (固定结构链条)在构造方法进行节点装配,组装出一个责任链的链条;
      • 提供责任链的外部访问方法;

      5.最后将责任链工厂在Support类中提供服务即可。

      优点

      • 可以控制请求处理的顺序;
      • 单一职责原则,对流式的处理过程进行解藕;
      • 开闭原则,可以在不修改现有代码的情况下,在程序中新增处理者。

      应用

      抽奖过滤器逻辑实现

      暂无评论

      发送评论 编辑评论

      
      				
      |´・ω・)ノ
      ヾ(≧∇≦*)ゝ
      (☆ω☆)
      (╯‵□′)╯︵┴─┴
       ̄﹃ ̄
      (/ω\)
      ∠( ᐛ 」∠)_
      (๑•̀ㅁ•́ฅ)
      →_→
      ୧(๑•̀⌄•́๑)૭
      ٩(ˊᗜˋ*)و
      (ノ°ο°)ノ
      (´இ皿இ`)
      ⌇●﹏●⌇
      (ฅ´ω`ฅ)
      (╯°A°)╯︵○○○
      φ( ̄∇ ̄o)
      ヾ(´・ ・`。)ノ"
      ( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
      (ó﹏ò。)
      Σ(っ °Д °;)っ
      ( ,,´・ω・)ノ"(´っω・`。)
      ╮(╯▽╰)╭
      o(*////▽////*)q
      >﹏<
      ( ๑´•ω•) "(ㆆᴗㆆ)
      😂
      😀
      😅
      😊
      🙂
      🙃
      😌
      😍
      😘
      😜
      😝
      😏
      😒
      🙄
      😳
      😡
      😔
      😫
      😱
      😭
      💩
      👻
      🙌
      🖕
      👍
      👫
      👬
      👭
      🌚
      🌝
      🙈
      💊
      😶
      🙏
      🍦
      🍉
      😣
      Source: github.com/k4yt3x/flowerhd
      颜文字
      Emoji
      小恐龙
      花!
      上一篇
      下一篇