java設計模式之責任鏈模式

2021-08-18 01:34:55 字數 1604 閱讀 8602

chain ofresponsibility(cor)模式也叫職責鏈模式或者職責連鎖模式,是行為模式之一,該模式構造一系列分別擔當不同的職責的類的物件來共同完成乙個任務,這些類的物件之間像鏈條一樣緊密相連,所以被稱作職責鏈模式。

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

解決問題:

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

責任鏈模式的基本條件:

1,物件鏈的組織。需要將某任務的所有職責執行物件以鏈的形式加以組織。

2,訊息或請求的傳遞。將訊息或請求沿著物件鏈傳遞,以讓處於物件鏈中的物件得到處理機會。

3,處於物件鏈中的物件的職責分配。不同的物件完成不同的職責。

4,任務的完成。處於物件鏈的末尾的物件結束任務並停止訊息或請求的繼續傳遞。

責任鏈模式的uml圖:

角色和職責:

handler :處理類的抽象父類。

concretehandler :具體的處理類。

**示例:

/**

* 處理類的抽象父類

* @author arain.liu

*/public abstract class carhandler

public abstract void handlercar(); }

/** * 具體處理類

* @author arain.liu

*/public class carheadhandler extends carhandler }}

/** * 具體處理類

* @author arain.liu

*/public class carbodyhandler extends carhandler }}

/** * 具體處理類

* @author arain.liu

*/public class cartailhandler extends carhandler }}

/** * client類

* @author arain.liu

*/public class mainclass

}

優點: 1、降低耦合度。它將請求的傳送者和接收者解耦。 2、簡化了物件。使得物件不需要知道鏈的結構。 3、增強給物件指派職責的靈活性。通過改變鏈內的成員或者調動它們的次序,允許動態地新增或者刪除責任。 4、增加新的請求處理類很方便。

缺點: 1、不能保證請求一定被接收。 2、系統效能將受到一定影響,而且在進行**除錯時不太方便,可能會造成迴圈呼叫。 3、可能不容易觀察執行時的特徵,有礙於除錯。

java設計模式之責任鏈模式

uml設計 定義 職責鏈模式 稱責任鏈模式 將請求的處理物件像一條長鏈一般組合起來,形成一條物件鏈。請求並不知道具體執行請求的物件是哪乙個,這樣就實現了請求與處理物件之間的解耦 示例 public abstract class leader public leader getnextleader 1...

java設計模式 責任鏈模式

步驟一 建立抽象處理者 handler 角色 這裡是操作與處理分開,介面定義操做方法,抽象類定義處理方法,具體可以寫在一起也行 public inte ce handlerpublic abstract class abstracthandler public void sethandler han...

Java設計模式 責任鏈模式

責任鏈模式責任鏈的應用場景 servlet api 中的filter過濾器 mvc 框架中的 簡單使用責任鏈模式拆分 servlet api 中的過濾器 模擬servlet中的request物件 desc模擬 servlet 中的 request 物件 模擬servlet中的response物件 d...