定義可封裝為命令的操作類型:
using System;
using System.Collections.Generic;
using System.Text;
namespace Pattern.Command
{
///
/// enum 定義操作的兩種方法 Insert 和 Delete
///
public enum Action
{
///
/// Insert
///
Insert,
///
/// Delete
///
Delete
}
}
執行實際業務操作的類別:
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)
{
// 程式碼略
}
}
}
Insert/Delete 實作細節。Operation(Action, MessageModel) 作為命令調用的單一入口。
Client (測試頁面)
│
▼
Invoker (Message) ──► Command (ICommand)
│ │
│ ▼
│ ConcreteCommand (SqlMessageCommand)
│ │
│ ▼
└──────────────► Receiver (SqlMessage)
Client 配置 Invoker 與 Command,Invoker 執行命令,Command 委派給 Receiver。四者職責清晰分離,支援靈活擴展。