從代碼角度來看,當一個邏輯的處理由不同責任對象完成,而客戶端希望能自定義這個處理流程,且不想直接與多個責任對象產生耦合時,可考慮使用責任鏈模式。
從應用角度來看,若對某件事的處理存在一個流程,需經歷不同責任點處理,且流程較複雜或只想對外公開一個流程入口點時,也適合採用此模式。實際上,責任鏈模式還可在架構層面應用,例如 .NET 中的分層異常處理關係,便可視為一種責任鏈模式的體現。
責任鏈模式與狀態模式的區別在於:前者著重責任的傳遞,且鏈路由客戶端配置;後者著重對象狀態的轉換,該轉換過程對客戶端是透明的。