設計模式之責任鏈模式

2021-10-09 19:53:42 字數 839 閱讀 1502

1.多個物件可以處理同一請求,但具體由哪個物件處理則在執行時動態決定;

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

3.可動態指定一組物件處理請求.1.將請求與處理解偶;

3.具備鏈式傳遞處理請求功能,請求傳送者無需知曉鏈路結構,只需等待請求處理結果;

4.鏈路結構靈活,可以通過改變鏈路結構動態地新增或刪減責任;

5.易於擴充套件新的請求處理類(節點),符合開閉原則.1.責任鏈太長或者處理時間過長,會影響整體效能;

2.如果節點物件存在迴圈引用時,會造成死迴圈,導致系統崩潰;一般使用

public

abstract

class

handler

public

abstract

void

handlerequest

(string request)

;}

public

class

concretehandlera

extends

handlerif(

this

.nexthandler != null)

}}

public

class

concretehandlerb

extends

handlerif(

this

.nexthandler != null)

}}

public

class

test

}

設計模式之 責任鏈模式

在一些情況下,對乙個訊息 含事件 的響應和處理需要很多物件來參與,這些物件對訊息的處理有前後順序,形成乙個處理鏈條,但物件是否真正處理訊息有賴於在它之前的物件的處理策略,前乙個物件處理後,後乙個物件則不需參與處理,這就是責任鏈模式。現實中有很多類似的場景,比如上訪,上訪一般是從最基層的信訪部門接受信...

設計模式之(責任鏈模式)

chain of responsibleity 責任鏈模式 在責任鏈模式 中,很多物件由每乙個物件對其下家的引用而接。起來形成一條鏈。請求在這個鏈上傳遞,直到鏈上的某乙個物件決定處理此請求。客戶並不知道鏈上的哪乙個物件最終處理這個請求,系統可以在不影響客戶端的情況下動態的重新組織鏈和分配責任。處理者...

設計模式之責任鏈模式

假設現在乙個公司的請假流程如下 一天及以下由小組組長審批,一天以上三天以下由經理審批,三天以上七天以下由老闆審批,七天以上直接勸退。如果每次請假時都很長的if else 來判斷該去找誰請假,很不容易擴充套件,我們使用責任鏈模式來實現。首先,是乙個抽象的父類 public abstract class...