2012-11-12 31 views
1

如果我有多個節點需要修改請求,是否仍然使用「責任鏈」設計模式是一個好主意?或者只有當只有一個(未知)節點專門處理請求時才應該使用這種模式?責任鏈可以有多個節點修改請求嗎?

IE:節點2和節點3都需要影響請求(R)。因此,即使節點2處理請求,我還是要繼續在列表中向下請求傳遞給下一個處理

    +--------+ (R) +--------+ (R) +--------+ (R) 
Client Request (R) | Node 1 |----->| Node 2 |----->| Node 3 |----->etc... 
        +--------+  +--------+  +--------+ 
+0

Eh?這個設計在** php **中想要做什麼? – Neal

+0

@Neal在* nix系統上的PHP站點上,我必須創建一個模塊,需要驗證目錄樹的權限和用戶/組設置。因此,對於樹中的每個請求,我需要通過此鏈向下發送它,其中節點1可以驗證請求是否爲目錄,並檢查是否設置了正確的許可證,並且節點2可能會檢查請求是否爲文件並驗證該許可證。但是,每個請求也需要驗證每個請求的用戶/組。但你是對的 - 我prolly不需要標記這個問題,因爲PHP(習慣) – veilig

回答

0

從我的觀點,你會使用pipes and filters模式會更好點,因爲每個步驟增加某種轉換和/或驗證。

該圖像被從等拍攝上述

enter image description here

在任何點,過濾器中的一個可以決定處理該請求,而不是將其傳遞到下一個過濾器。在上面的示例中(如果它是一個http請求),未經身份驗證的請求將導致401 http狀態碼。

+1

不是這只是責任鏈? – veilig