在責任鏈模式裡,很多物件由每乙個物件對其下家的引用而連線起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。發出這個請求的客戶端並不知道鏈上的哪乙個物件最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織和分配責任
當我們在執行一串相關聯且有順序的時候,可以使用責任鏈。
例一:打遊戲,攻打第三關時需要把第一關和第二關通關才可以打第三關
。且必須第一關和第二關都得通關,那麼這種場景我們就可以使用責任鏈。
例二:閘道器攔截,當客戶端請求後端時,我們對請求要做閘道器限流判斷、黑名單攔截判斷、使用者會話攔截判斷,只有全都都通過才可以訪問目標方法,該種場景也可以使用責任鏈模式。以下以閘道器攔截為例:
/*** @author: cyb
* @date: 2020-10-09 22:53
* @description:定義乙個鏈狀抽象的操作方法
*/public abstract class gatewayhandler
/***
* 呼叫下乙個操作物件類中的抽象實現方法
*/protected void nextservice()}}
import org.springframework.stereotype.component;/** * @author: cyb
* @date: 2020-10-09 22:56
* @description:設定第一關執行方法,並在方法中呼叫下乙個鏈狀物件中指定的方法,從而實現鏈狀事務的實現
*/@component
public class currentlimithandler extends gatewayhandler
}
import org.springframework.stereotype.component;/** * @author: cyb
* @date: 2020-10-09 22:55
* @description:設定第二關
*/@component
public class blacklisthandler extends gatewayhandler
}
import org.springframework.stereotype.component;/** * @author: cyb
* @date: 2020-10-09 22:55
* @description:設定第三關
設計模式 責任鏈
使用情況描述 某人向銀行借錢 借1w一下一般櫃員就可以解決,借2w一下一般經理就能解決,如果借更多就需要主管才能解決。這就是乙個責任鏈,根據條件的不同,分別進行複雜的邏輯運算。if,switch都可以進行這樣的操作,但是需要在每一層進行一次複雜的操作。責任鏈模式是一種物件的行為模式。在責任鏈模式裡,...
責任鏈設計模式
責任鏈的應用場景 簡單使用責任鏈模式拆分 servlet api 中的過濾器 模擬servlet中的request物件 desc模擬 servlet 中的 request 物件 模擬servlet中的response物件 desc模擬 servlet 中的 response 物件 過濾器抽象層 de...
設計模式 責任鏈
引用 objective c程式設計之道 ios設計模式解析 責任鏈模式 使多個物件都有機會處理請求,從而避免請求的傳送者和接收者之間發生耦合。此模式將這些物件連成一條鏈,從而沿著這條鏈傳遞請求,直到有乙個物件處理它為止。責任鏈主要思想 很多物件引用了同一型別的另乙個物件,形成了一條鏈。鏈中每個物件...