職責鏈模式

2022-03-03 22:02:31 字數 1212 閱讀 6221

這是我在發的第一篇帖子,之前就對設計模式挺有興趣,今天就來聊一聊職責鏈設計模式,並給出相關的**示範,希望自己能鞏固一下,順便分享一下知識。

首先,我們來看一下職責鏈模式的定義:

名稱:chain of responsibility

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

適用性:

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

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

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

結構圖:

談到這個模式,我不禁想到了自己的第一次請假,來北京實習,首先得經過導員批准,然後再去系主任,再去院主任,經過3個領導的批准,最後小王我才審批下來,那叫乙個累啊,這不就是乙個職責鏈模式嗎?所以程式即生活,我們程式設計師的**構建思想其實很大程度上來自於生活,接下來我們來用**模擬這個場景:

public

abstract

class

handler

public

void

setnexthandler(handler nexthandler)

public

abstract string handlerequest(int

holiday);

}

public class instructor extends handlerelse 

return res;}}

public class departmenthead extends handlerelse 

return res;

}}

public class dean extends handlerelse 

return res; }

}

public class client 

}//結果:

由院主任審批通過

這就是乙個完整的簡單的職責鏈模式,其中可以看到對乙個請求通過不同的物件去處理,根據天數的不同返回不一樣的結果,這就是乙個職責鏈過程。職責鏈的使用範圍非常廣,在工作中經常會用到。希望大家通過這個簡單的例子能了解體會到其中的設計思想。

職責鏈模式

1.職責鏈 namespace dutychainpattern 用來處理請求 public abstract void transmitrequest int request 班主任 職責鏈上的乙個節點,在裡面進行判斷,看能否處理請求,不能則將請求轉移 public class classadvi...

職責鏈模式

軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...

職責鏈模式

劇情簡要 學習此模式,讓筆者聯想到自然界的生物鏈。打個比方 大魚吃小魚,小魚吃蝦公尺。河裡的小蝦公尺問大魚,你要不要吃我啊?大魚說 你太小了,吃了 沒吃,return 懶得吃!然後蝦公尺又問小魚 小螃蟹 小河馬同樣的問題。其實如果小蝦公尺這麼想自我了結的話,根本不用這麼費勁。這就開始了我們職責鏈模式...