行為型模式之責任鏈模式

2022-01-12 01:00:03 字數 1294 閱讀 5018

目錄應用場景

擴充套件:純、不純的職責鏈模式

在現實生活中,常常會出現這樣的事例:乙個請求有多個物件可以處理,但每個物件的處理條件或許可權不同,如找領導出差報銷等。

在計算機軟硬體中也有相關例子,如匯流排網中資料報傳送、異常處理。所有這些,如果用責任鏈模式都能很好解決。

責任鏈(chain of responsibility)模式的定義:為了避免請求傳送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一物件記住其下乙個物件的引用而連成一條鏈。當有請求發生時,可將請求沿著這條鏈傳遞,直到有物件處理它為止。

注意:責任鏈模式也叫職責鏈模式

在責任鏈模式中,客戶只需要將請求傳送到責任鏈上即可,無須關心請求的處理細節和請求的傳遞過程,所以責任鏈將請求的傳送者和請求的處理者解耦了。

責任鏈模式是一種物件行為型模式,其主要優點如下:

其主要缺點如下:

通常情況下,可以通過資料鏈表來實現職責鏈模式的資料結構。

職責鏈模式主要包含以下角色:

其結構圖如圖所示:

客戶端可按圖所示設定責任鏈:

職責鏈模式的實現**如下:

class program

}//抽象處理者角色

public abstract class handler

public handler getnext()

//處理請求的方法

public abstract void handlerequest(string request);

}//具體處理者角色1

public class concretehandler1 : handler

else

else

} }

}//具體處理者角色2

public class concretehandler2 : handler

else

else} }

}

程式執行結果如下:

具體處理者2負責處理該請求!
前邊已經講述了關於責任鏈模式的結構與特點,下面介紹其應用場景,責任鏈模式通常在以下幾種情況使用:

職責鏈模式存在以下兩種情況:

行為型模式(一) 責任鏈模式

責任鏈 chain of responsibility 模式 為了避免請求傳送者與多個請求處理者耦合在一起,將所有請求的處理者通過前一物件記住其下乙個物件的引用而連成一條鏈 當有請求發生時,可將請求沿著這條鏈傳遞,直到有物件處理它為止。注意 責任鏈模式也叫職責鏈模式。在責任鏈模式中,客戶只需要將請求...

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

設計模式 行為型模式 責任鏈模式 將請求沿著鏈傳遞,然後直到物件處理即可。邏輯如上,只處理1,2,3情況,其餘的情況都不處理。物件 public class level public boolean above level level 將物件進行封裝 public class request pub...

行為型模型 責任鏈模式

處理類的抽象父類。concretehandler 具體的處理類。責任鏈優缺點 優點 1。責任的分擔。每個類只需要處理自己該處理的工作 不該處理的傳遞給下乙個物件完成 明確各類的責任範圍,符合類的最小封裝原則。2。可以根據需要自由組合工作流程。如工作流程發生變化,可以通過重新分配物件鏈便可適應新的工作...