建立責任鏈:員工 → 主管 → 經理,根據訊息長度決定處理層級:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Pattern.ChainOfResponsibility;
public partial class ChainOfResponsibility : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
AbstractExecutor employee = new Employee();
AbstractExecutor leader = new Leader();
AbstractExecutor manager = new Manager();
employee.SetSuccessor(leader);
leader.SetSuccessor(manager);
Response.Write(employee.Insert(new MessageModel("abcd", DateTime.Now)));
Response.Write("<br />");
Response.Write(employee.Insert(new MessageModel("abcdefgh", DateTime.Now)));
Response.Write("<br />");
Response.Write(employee.Insert(new MessageModel("abcdefghigkl", DateTime.Now)));
Response.Write("<br />");
Response.Write(employee.Insert(new MessageModel("abcdefghigklmnop", DateTime.Now)));
}
}
執行者:雇員 內容:abcd 時間:2007-4-22 20:04:41
執行者:主管 內容:abcdefgh 時間:2007-4-22 20:04:41
執行者:經理 內容:abcdefghigkl 時間:2007-4-22 20:04:41
你所插入的Message不符合要求
| 優勢 | 說明 |
|---|---|
| 解耦發送者與接收者 | 客戶端只知鏈頭(員工),不知最終處理者。 |
| 動態調整鏈結 | 可運行時增減/重排處理者(SetSuccessor)。 |
| 單一職責 | 每個處理者只關注特定條件範圍。 |
| 開放封閉 | 新增處理者無需修改既有代碼。 |
| 靈活性 | 請求可在鏈中傳遞、部分處理、完全處理或拒絕。 |