Java 设计模式之责任链

下边是我设计的一个简单模式,非常好理解,不过需要你动手自己敲一下,你会发现这种设计模式非常巧妙,hashMap的源码设计也是这种方式

责任链就是 ,连续发生的一整套逻辑在触发时,依次按步骤执行.(这种功能你会说新人也能实现干嘛非要这么写,这就是牛人和非牛的区别,要想成为他们就要需要试着理解领悟他们.)

 首先定义一个 公共的抽象类

package com.jxd.springbootstrategy.handler;


import org.springframework.scheduling.annotation.Async;

/**
 * 责任链设计模式
 */
public abstract class GatewayHandler {

    private GatewayHandler gatewayHandler;

    /**
     * 使用抽象类定义共同方法的行为
     */
    public abstract void service();


    public void nextService(){
        if(null!=gatewayHandler){
            gatewayHandler.service();
        }
    }


    /**
     *
     * 同一个父类
     * @param gatewayHandler
     */
    public void setNextGatewayHandler(GatewayHandler gatewayHandler) {
        this.gatewayHandler = gatewayHandler;
    }


接下来定义每一个步骤的具体实现 我们这里有三步.
public class CurrentLimitHandler  extends GatewayHandler{

    @Override
    public void service() {
        System.out.println("第一步 >> API接口的限流...");
        nextService();
    }
}

 

public class BlackListHandler extends GatewayHandler{

    @Override
    public void service() {
        System.out.println("第二步 >> 黑名单拦截...");
        nextService();
    }
}
public class ConversationHandler extends GatewayHandler{
    @Override
    public void service() {
        System.out.println("第三步 >> 用户会话拦截...");
    }
}

 

 

具体调用 我们放到工厂里边  每次去工厂去调用

public class FactoryHandler {

    public static CurrentLimitHandler getCurrentLimitHandler() {
        CurrentLimitHandler currentLimitHandler = new CurrentLimitHandler();
        BlackListHandler blackListHandler = new BlackListHandler();
        ConversationHandler conversationHandler = new ConversationHandler();
        currentLimitHandler.setNextGatewayHandler(blackListHandler);
        blackListHandler.setNextGatewayHandler(conversationHandler);
         return currentLimitHandler;
    }

    public static void main(String[] args) {
        FactoryHandler.getCurrentLimitHandler().service();
    }

}

 

看下一执行的结果,你可以用这种方法展开无尽想象

 

 




}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章