設計模式 責任鏈模式

2021-08-14 15:21:35 字數 1404 閱讀 1483

定義

使多個物件都有機會處理請求,從而避免了請求的傳送者和接收者之間的耦合關係。將這些物件連成一條鏈,並沿著這條連傳遞該請求,直到有物件處理它為止。

使用場景

多個物件可以處理同一請求,單具體由哪個物件處理則在執行時決定

在請求處理這不明確的情況下向多個物件提交乙個請求

需要動態指定一組物件處理請求

關鍵點

乙個抽象類,定義處理請求的方法,並持有下一節點物件的引用,對請求進行分發

多個具體的請求處理類,對請求進行具體處理,如果不能處理則將請求**給下乙個節點

實現

/**

* 抽象請求類—定義抽象請求方法

*/public

abstract

class

abstracthandler else else }}

/*** 是否滿足處理當前請求的條件

*/protected

abstract

boolean

ishandlerequest(string action);

/*** 每個請求處理者具體處理請求的方法

*/protected

abstract

void

handle();

}

/**

* 具體的請求處理者a

*/public

class

handlera

extends

abstracthandler

@override

protected

void

handle()

}

/**

* 具體的請求處理者b

*/public

class

handlerb

extends

abstracthandler

@override

protected

void

handle()

}

使用

handlera handlera = new handlera();

handlerb handlerb = new handlerb();

handlera.nexthandler = handlerb;

handlera.handlerequest("a");

小結優點

對請求者和處理者進行解耦、提高**的靈活性

缺點每乙個請求處理都需要乙個請求處理類與之對應

設計模式 責任鏈模式

定義 避免請求傳送者與接收者耦合在一起,讓多個物件都有可能接收請求,將這些請求連線成一條鏈,並且沿著這條鏈傳遞請求,直到有物件處理它為止。例項 請假加薪審批 using system using system.collections.generic using system.text namespa...

設計模式 責任鏈模式

責任鏈可以使得系統在不影響客戶端的前提下動態的安排責任鏈和分配責任。責任鏈模式中包含的角色有抽象處理者,具體處理者以及請求的傳送者。責任鏈可以是一條直線,乙個環鏈甚至乙個樹結構。它使得每乙個具體的訊息處理者都有可能處理訊息。抽象的請求處理者 author wly public abstract cl...

設計模式 責任鏈模式

責任鏈模式 chain ofresponsibility pattern 基本概念 責任鏈,顧名思義,是指乙個負責相應請求的行為鏈。首先要理解的是乙個鏈,然後通過這個鏈來管理個行為。什麼時候會用到責任鏈 對於乙個請求,沒有特別指明由誰處理或沒有指明如何處理。此時可以使用責任鏈的形式,用過將各種處理行...