首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C# 設計模式:責任鏈模式完整測試與執行結果 (5/5)

     編輯:關於C語言

客戶端測試程式碼

建立責任鏈:員工 → 主管 → 經理,根據訊息長度決定處理層級:

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不符合要求

結果分析

  • 長度 < 5:員工處理("abcd" 4 字元)。
  • 5 ≤ 長度 < 10:主管處理("abcdefgh" 8 字元)。
  • 10 ≤ 長度 < 15:經理處理("abcdefghigkl" 12 字元)。
  • 長度 ≥ 15:超出經理權限,拒絕處理("abcdefghigklmnop" 16 字元)。

責任鏈模式核心價值

優勢說明
解耦發送者與接收者客戶端只知鏈頭(員工),不知最終處理者。
動態調整鏈結可運行時增減/重排處理者(SetSuccessor)。
單一職責每個處理者只關注特定條件範圍。
開放封閉新增處理者無需修改既有代碼。
靈活性請求可在鏈中傳遞、部分處理、完全處理或拒絕。

適用場景

  • 多個物件可處理同一請求,具體由誰處理運行時決定。
  • 請求需按順序傳遞給多個處理者(如審核流程、異常處理、日誌過濾)。
  • 動態指定處理者順序與條件。
責任鏈模式類別圖
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved