hi,本篇主要是介紹責任鏈的設計模式原理及場景。
設計模式是一套用來提高**可復用性、可維護性、可讀性、穩健性以及安全性的解決方案。它不是語法,而是在特定的場景下提供開發者通用的更簡潔的實現。2023年共收錄23種設計,責任鏈便是其一,本篇僅介紹該模式的原理、場景、實現思路。
責任鏈(chain of responsibility)模式的定義:為了避免請求傳送者與多個請求處理者耦合在一起,於是將所有請求的處理者通過前一物件記住其下乙個物件的引用而連成一條鏈;當有請求發生時,可將請求沿著這條鏈傳遞,直到有物件處理它為止。
場景:換句話說,我們假設一家網際網路x公司有前台接待、市場部、商務部、人事部、技術部、運營部、財務部等等部門,此時前台接待收到乙個合同郵件包裹,包裹未註明歸屬於哪個部門(假設屬於技術部)。那麼接待需要找到該包裹主人需要乙個乙個部門去問,於是先去市場部問,市場部:不是我部的;又去商務部問,商務部:不是我部的;又去人事部問,人事部:不是我部的,又去技術部問,技術部:是我部的!前台接待終於找到包裹歸屬了,萬分激動,不用繼續跑腿了,可以繼續回前台玩手機了。到此處程式也就結束了,也不會往下繼續找部門了,否者會一直找 直到明確該包裹是屬於某部門或者包裹發錯公司了為止。
綜上所述,我們開始上**。
public class chainhandler
public chainhandler addchainhandler(baseservice baseservice)
public chainhandler addchainhandlers(listbaseservices)
/*** 找到包裹歸屬邏輯
未完待續...
設計模式之 責任鏈模式
在一些情況下,對乙個訊息 含事件 的響應和處理需要很多物件來參與,這些物件對訊息的處理有前後順序,形成乙個處理鏈條,但物件是否真正處理訊息有賴於在它之前的物件的處理策略,前乙個物件處理後,後乙個物件則不需參與處理,這就是責任鏈模式。現實中有很多類似的場景,比如上訪,上訪一般是從最基層的信訪部門接受信...
設計模式之(責任鏈模式)
chain of responsibleity 責任鏈模式 在責任鏈模式 中,很多物件由每乙個物件對其下家的引用而接。起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。客戶並不知道鏈上的哪乙個物件最終處理這個請求,系統可以在不影響客戶端的情況下動態的重新組織鏈和分配責任。處理者...
設計模式之責任鏈模式
假設現在乙個公司的請假流程如下 一天及以下由小組組長審批,一天以上三天以下由經理審批,三天以上七天以下由老闆審批,七天以上直接勸退。如果每次請假時都很長的if else 來判斷該去找誰請假,很不容易擴充套件,我們使用責任鏈模式來實現。首先,是乙個抽象的父類 public abstract class...