責任鏈(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...