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

C# 委派模式:解耦處理邏輯與輸出介面

     編輯:關於C語言

問題:硬式碼耦合

若 `ProcessNumber` 直接呼叫 `Console.WriteLine`、`listBox.Items.Add`,則:

  • 難以單元測試
  • 無法複用於非 Console/WinForms 環境
  • 新增輸出方式需修改核心類別

解決方案:委派注入


namespace DelegateSample2
{
    public delegate void ShowNumberDel(object[] items);

    public class ProcessNumber
    {
        private readonly object[] _items;
        public ProcessNumber(int max)
        {
            _items = new object[max];
            for (int i = 0; i < max; i++) _items[i] = i;
        }
        // 接收委派,不關心具體實作
        public void ProcessItems(ShowNumberDel show) => show(_items);
    }
}

介面佈局示意

表單介面:四個按鈕分別對應四種輸出模式

為何這樣設計更好?

傳統硬編碼委派注入
處理類別引用 UI 命名空間處理類別零依賴
單一輸出方式支援任意組合
難以測試易於 Mock 驗證
違反 DIP符合依賴倒置原則
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved