Java设计模式之责任链模式

  • 责任链模式
    • 一个请求可能会被多个对象处理,而客户端不需要知道会被哪些对象处理,实现请求者和处理者的解耦。
  • 责任链流程图
  • 代码实现(例子)​​​​​​​
    • /**

      * 责任链模式-抽象handler

      *

      */

      public abstract class GatewayHandler {

      private GatewayHandler gatewayHandler;

      /**

      * 定义抽象行为

      */

      public abstract void service();

       

      /**

      * 设置下一个handler

      */

      public void setHandler(GatewayHandler gatewayHandler){

      this.gatewayHandler=gatewayHandler;

      }

      /**

      * 执行

      */

      public void nextService(){

      if (gatewayHandler!=null){

      gatewayHandler.service();

      }

      }

      }

      /**

      * 责任链模式-具体handler

      */

      public class BlacklistHandler extends GatewayHandler {

      @Override

      public void service() {

      System.out.println("<------黑名单拦截----->");

      nextService();

      }

      }

      /**

      * 责任链模式-具体handler

      */

      public class ConversationHandler extends GatewayHandler {

      @Override

      public void service() {

      System.out.println("第三关用户会话拦截判断....");

      nextService();

      }

      }

      /**

      * 责任链模式-具体handler

      */

      public class CurrentLimitHandler extends GatewayHandler {

      @Override

      public void service() {

      System.out.println("<------网关限流----->");

      nextService();

      }

       

      }

      /**

      *责任链模式-handler会话工厂

      */

      public class HandlerFactory {

      public static GatewayHandler getGatewayHandler(){

      GatewayHandler currentLimitHandler=new CurrentLimitHandler();

      GatewayHandler blacklistHandler=new BlacklistHandler();

      GatewayHandler conversationHandler=new ConversationHandler();

      //设置下一个handler

      currentLimitHandler.setHandler(blacklistHandler);

      //设置下一个handler

      blacklistHandler.setHandler(conversationHandler);

      return currentLimitHandler;

      }

      }

      @Test

      public static void main(String[] args) {

      GatewayHandler gatewayHandler = getGatewayHandler();

      gatewayHandler.service();

      }

  • ​​​​​​​通过Java继承,多态,子类实现由父类接收(向上转型),在通过父类的抽象方法调用子类的具体业务实现方法。

-----------------------------------------------------------------------------------------------------------本文参考自蚂蚁课堂精讲设计模式系列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值