>>回傳《C#常用設計模式》
- 1. 簡介
- 2. 示例
1. 簡介
- 定義
- 很多物件由每一個物件對其下家的參考而連接起來形成一條鏈,
- 請求在這個鏈上傳遞,直到鏈上的某一個物件決定處理此請求,
- 發出這個請求的客戶端并不知道鏈上的哪一個物件最終處理這個請求,這使得系統可以在不影響客戶端的情況下動態地重新組織和分配責任,
- 責任鏈可能是一條直線、一個環鏈或者一個樹結構的一部分
- 類圖

2. 示例
public abstract class Handler {
/**
* 持有后繼的責任物件
*/
protected Handler successor;
/**
* 示意處理請求的方法,雖然這個示意方法是沒有傳入引數的
* 但實際是可以傳入引數的,根據具體需要來選擇是否傳遞引數
*/
public abstract void handleRequest();
/**
* 取值方法
*/
public Handler getSuccessor() {
return successor;
}
/**
* 賦值方法,設定后繼的責任物件
*/
public void setSuccessor(Handler successor) {
this.successor = successor;
}
}
public class ConcreteHandler extends Handler {
/**
* 處理方法,呼叫此方法處理請求
*/
public override void handleRequest() {
/**
* 判斷是否有后繼的責任物件
* 如果有,就轉發請求給后繼的責任物件
* 如果沒有,則處理請求
*/
if(getSuccessor() != null)
{
Console.WriteLine("放過請求");
getSuccessor().handleRequest();
}else
{
Console.WriteLine("處理請求");
}
}
}
public class Client {
public static void main(String[] args) {
//組裝責任鏈
Handler handler1 = new ConcreteHandler();
Handler handler2 = new ConcreteHandler();
handler1.setSuccessor(handler2);
//提交請求
handler1.handleRequest();
}
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/260520.html
標籤:其他
