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();
    }

}

 

看下一執行的結果,你可以用這種方法展開無盡想象

 

 




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