設計模式 職責鏈模式

2021-07-02 14:13:47 字數 774 閱讀 6699

職責鏈模式,參考這篇文章寫的很好。

外觀模式,參考這篇文章寫的也很好。

職責鏈,chain of responsibility。

1.意圖

使多個物件都有機會處理請求,從而避免請求的傳送者和接受者之間的耦合關係。將這些物件連成一條鏈,並沿著這條鏈傳遞該請求,直到有乙個物件處理它為止。

3.適用性

在以下條件下使用responsibisibility鏈:

有多個的物件可以處理乙個請求,哪個物件處理該請求執行時刻自動確定。

你想在不明確指定接受者的情況下,向多個物件中的乙個提交乙個請求。

可處理乙個請求的物件集合應被動態指定。

以上摘錄自《設計模式》,奇怪的是《

php設計模式介紹

》這本書沒有講職責鏈,這個是不是和php本身物件導向的能力不足有關呢?這個問題留待以後去驗證。

我的理解:

1.這個請求要可以被傳遞,那麼這些物件最好是有相同的可以接收這樣規格請求的介面,例如安卓的事件傳遞(安卓的事件傳遞就是乙個職責鏈,那一層的view消耗了該事件,就返回true,然後這個返回值就向回傳遞。在職責鏈前面往往會使用外觀模式,對於外部使用者,他並不知道後面的職責鏈,這個是有外觀實現者來處理的。)。如果介面不一致的話,恐怕就會有些問題,應該每個物件都可以單獨接收這個請求,只是要處於某種特定的情況下。

2.消耗了請求,請求就不再繼續向下傳遞,而是往回返回了;但其實,個人感覺,沒有消耗請求的物件也可以針對請求有所響應。

3.每個物件都可以響應請求,也就是請求需要滿足一定的條件,所以,物件的順序是要合理安排的。

設計模式 職責鏈模式

2008年08月17日 星期日 下午 04 28 using system using system.collections.generic using system.text public officer officer o public abstract void deal action a c...

設計模式 職責鏈模式

1 request.h ifndef request h define request h include include using namespace std class request 請求類定義 endif request h 2 manager.h ifndef manager h def...

設計模式 職責鏈模式

今天跟大家分享下設計模式中的職責鏈模式。不知道大家在學習職責鏈模式的時候是否感覺困難。我剛開始學的時候就被整暈了。呵呵,進入正題。職責鏈模式是物件行為型模式中比較有特點的設計模式了,的確有意思,它可以像資料結構中煉表一樣傳遞。其實生活中好多的行為方式都體現了職責鏈模式,我們初期學習者可以把職責鏈模式...