客戶端將消息對象發送給接收者,責任鏈模式將接收者連成一條鏈,並在該鏈上傳遞該消息對象,直到有對象處理它。經過讓更多對象接觸到消息請求,避免了發送者和接收者的耦合。 java
接收者Handler做爲一個抽象類,持有自身引用,指向它的後繼接收者successor。咱們能夠經過工廠模式構建這條責任鏈。 spring
爲了更好的知足開閉原則,每每在業務變動的時候只添加類而不修改原碼。若是責任鏈中出現變更,須要修改工廠方法來知足業務需求。 spa
在java ee開發中,過濾器就是一個責任鏈的經典應用,對用戶的請求進行處理。在spring security中經過若干filter類構成了責任鏈處理http請求,提供認證與受權。 對象
責任鏈模式能夠保證客戶端與服務端的鬆散耦合,可是對鏈條的遍歷過程是消耗時間的,並且在內存中建立了大量接收者對象,僅僅一少部分會使用到。 blog
須要根據實際應用判斷是否使用責任鏈模式,或者使用其餘模式替換。內存