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

C# 設計模式:命令模式動作列舉與接收者實作 (2/5)

     編輯:關於C語言

動作列舉:Action

定義可封裝為命令的操作類型:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command
{
    /// 
    /// enum 定義操作的兩種方法 Insert 和 Delete
    /// 
    public enum Action
    {
        /// 
        /// Insert
        /// 
        Insert,

        /// 
        /// Delete
        /// 
        Delete
    }
}

接收者:SqlMessage (Receiver)

執行實際業務操作的類別:

using System;
using System.Collections.Generic;
using System.Text;

namespace Pattern.Command
{
    /// 
    /// 接收者(Receiver)角色
    /// Sql 方式操作 Message
    /// 
    public class SqlMessage
    {
        /// 
        /// 操作
        /// 
        /// 操作的方法
        /// Message 實體物件
        public void Operation(Action action, MessageModel mm)
        {
            switch (action)
            {
                case Action.Insert:
                    Insert(mm);
                    break;
                case Action.Delete:
                    Delete(mm);
                    break;
            }
        }

        /// 
        /// 插入 Message
        /// 
        /// Message 實體物件
        private void Insert(MessageModel mm)
        {
            // 程式碼略
        }

        /// 
        /// 刪除 Message
        /// 
        /// Message 實體物件
        private void Delete(MessageModel mm)
        {
            // 程式碼略
        }
    }
}

Receiver 角色特徵

  • 具體業務邏輯:封裝真實的 Insert/Delete 實作細節。
  • 無命令感知:不知道命令模式存在,只提供公開操作方法。
  • 統一入口:Operation(Action, MessageModel) 作為命令調用的單一入口。
  • 可測試性:可獨立單元測試,不依賴命令基礎設施。

命令模式解耦關係圖

Client (測試頁面)
    │
    ▼
Invoker (Message) ──► Command (ICommand)
    │                      │
    │                      ▼
    │              ConcreteCommand (SqlMessageCommand)
    │                      │
    │                      ▼
    └──────────────► Receiver (SqlMessage)

Client 配置 Invoker 與 Command,Invoker 執行命令,Command 委派給 Receiver。四者職責清晰分離,支援靈活擴展。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved