職責鏈模式

2021-10-07 19:02:43 字數 2991 閱讀 5804

顧名思義,責任鏈模式(chain of responsibility pattern)為請求建立了乙個接收者物件的鏈。這種模式給予請求的型別,對請求的傳送者和接收者進行解耦。這種型別的設計模式屬於行為型模式。

在這種模式中,通常每個接收者都包含對另乙個接收者的引用。如果乙個物件不能處理該請求,那麼它會把相同的請求傳給下乙個接收者,依此類推。

意圖:避免請求傳送者與接受者耦合在一起,讓多個物件都有可能接收請求,將這些物件連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止

主要職責:職責鏈上的處理者負責處理請求,客戶只需要將請求傳送到職責鏈上即可,無須關心請求的處理細節和請求的傳遞,所以在職責鏈上請求的傳送者和請求的處理者解耦了

//請求的方法

package jresonsibility;

/** * @author zhou jian

* @date 2020 $ 2020/7/5 0005 13:41

*///請求

public

class

purchaserequest

public

intgettype()

public

float

getprice()

public

intgetid()

}

//請求的審批人:抽象類

package jresonsibility;

/** * @author zhou jian

* @date 2020 $ 2020/7/5 0005 13:43

*///請求的審批人

public

abstract

class

public

void

//處理審批請求的方法,得到乙個請求,處理是子類完成的,因此該方法做成抽象

public

abstract

void

processrequest

(purchaserequest purchaserequest)

;}

//各種審批的人

package jresonsibility;

/** * @author zhou jian

* @date 2020 $ 2020/7/5 0005 13:45

*/public

class

extends

@override

public

void

processrequest

(purchaserequest purchaserequest)

else}}

package jresonsibility;

/** * @author zhou jian

* @date 2020 $ 2020/7/5 0005 13:48

*/public

class

extends

@override

public

void

processrequest

(purchaserequest purchaserequest)

else}}

package jresonsibility;

/** * @author zhou jian

* @date 2020 $ 2020/7/5 0005 13:48

*/public

class

extends

@override

public

void

processrequest

(purchaserequest purchaserequest)

else}}

package jresonsibility;

/** * @author zhou jian

* @date 2020 $ 2020/7/5 0005 13:50

*/public

class

schoolmasteraprrover

extends

@override

public

void

processrequest

(purchaserequest purchaserequest)

}}

//客戶端

spring請求的流程中,執行了***相關方法:interceptor:prehandler等等

在處理springmvc請求時,使用到職責鏈模式還使用到介面卡模式

handlerexecutionchain主要負責的是請求***的執行和請求處理,但是它本身是不處理請求的,只是將請求分配給鏈上註冊處理器執行,這是職責鏈實現方式,減少職責鏈本身與處理邏輯之間的耦合,規範了處理流程,規範了handlerinterceptor的集合,可以向其中註冊相應的***

職責鏈模式

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

職責鏈模式

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

職責鏈模式

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