設計模式 行為型 責任鏈模式

2021-10-21 14:31:14 字數 1833 閱讀 4203

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

使用場景

乙個請求物件需要多種任務的處理,通過鏈式傳播物件的場景。

優點1.職責鏈對於客戶請求是透明的

2.「鏈」將請求的傳送者和處理者解耦

**演示

日誌類級別有debug、info、warn、error的區別,模擬日誌類對請求的處理。

日誌請求

/**

* 日誌類

*/@allargsconstructor

@data

public

class

log

列舉型別

/**

* 日誌型別

*/public

enum loglevel

日誌介面

/**

* 日誌介面

*/public

inte***ce

ilogger

console型別日誌處理類,通過將請求註冊到linkedblockingqueue中,當請求註冊到console中,take()取出log請求物件處理,並將log物件put到下乙個處理類debug型別日誌處理類中,如法炮製。

利用take()方法取不出物件就會阻塞的特性,責任鏈會一直阻塞,直到有新的請求到達,繼續處理。

/**

* console日誌

*/@data

public

class

consolelogger

extends

thread

implements

ilogger

public

void

process

(log log)

throws interruptedexception

public

void

print

(string s)

@override

public

void

run(

) nextlogger.

process

(log);}

catch

(interruptedexception e)}}

}

debug日誌處理類

/**

* debug日誌

*/@data

public

class

debuglogger

extends

thread

implements

ilogger

@override

public

void

print

(string s)

@override

public

void

run()}

catch

(interruptedexception e)}}

}

測試結果

/**

* 非同步責任鏈測試

*/public

class

test

}

設計模式 行為型 責任鏈模式

從擊鼓傳花談起 擊鼓傳花是一種熱鬧而又緊張的飲酒遊戲。在酒宴上賓客依次坐定位置,由一人擊鼓,擊鼓的地方與傳花的地方是分開的,以示公正。開始擊鼓時,花束就開始依次傳遞,鼓聲一落,假如花束在某人手中,則該人就得飲酒。擊鼓傳花的類圖結構如下 如果用乙個物件系統描述賈府,那麼賈母 賈赦 賈政 賈寶玉和賈環等...

行為型設計模式之責任鏈模式

責任鏈模式是一種鏈式結構,就是由乙個個節點首尾相接串起來的結構,具有很好的靈活性,將每乙個節點看作是乙個物件,每乙個物件擁有不同的處理邏輯,將乙個請求從鏈式的首端發出,沿著鏈的路徑依此傳遞每乙個節點物件,直到有物件處理這個請求為止,我們將這樣一種模式稱為責任鏈模式。使多個物件都有機會處理請求,從而避...

JAVA設計模式(行為型) 責任鏈模式

避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些物件連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止 public class chainofresponsibility main support support 1 newdemo1 support support s...