1. 程式人生 > >java責任鏈設計模式(功能鏈)

java責任鏈設計模式(功能鏈)

back ack right 範圍 inline otto .com pla 多個

1、概述

網上講述大部分責任鏈設計模式如下圖,將責任鏈定義為:使多個對象都有機會處理同一個請求(下圖中的數據),從而避免請求的發送者和接收者之間的耦合關系。將這些對象連成一條鏈(下圖的A B C),並沿著這條鏈傳遞該請求,直到有一個對象處理它為止。

技術分享圖片

我所講解的和這個不太一樣,網上一般講的是如果請求(數據)來了,對象A是否能處理?處理不了轉為鏈條的一個對象B去處理,B處理不了則繼續往下走,以此類推,並且只要有一個對象可以處理,就不會繼續往下走了。比如A能處理,則處理之後就返回。我所講的應該稱為功能鏈比較合適,它適用的範圍更廣,大概流程如下:

技術分享圖片

針對一個請求,有很多處理流程,每一個流程比較獨立,但是處理流程比較類似。這還不簡單嗎?不過我的需求是,系統可能內置了A、B、C三個對象對事件進行處理,假如我現在要對事件增加一個處理邏輯,該怎麽辦?今天比較晚了,明天繼續。。。

java責任鏈設計模式(功能鏈)