- 將一個請求封裝為一個物件,讓你可用不同的請求對客戶進行參數化;請求排隊或請求日誌,以及支援可取消的操作。
![]() |
| 基本架構圖 |
![]() |
| 實例架構圖 |
using System;
using System.Collections.Generic;
namespace DPExample
{
public class 烤肉串者
{
public void 烤羊肉串()
{
Console.WriteLine("烤羊肉串");
}
public void 烤雞翅()
{
Console.WriteLine("烤雞翅");
}
}
public abstract class 命令
{
protected 烤肉串者 receiver;
public 命令(烤肉串者 receiver)
{
this.receiver = receiver;
}
abstract public void 執行命令();
}
class 烤羊肉串 : 命令
{
public 烤羊肉串(烤肉串者 receiver): base(receiver)
{ }
public override void 執行命令()
{
receiver.烤羊肉串();
}
}
class 烤雞翅 : 命令
{
public 烤雞翅(烤肉串者 receiver) : base (receiver)
{
}
public override void 執行命令()
{
receiver.烤雞翅();
}
}
public class 服務生
{
private IList<命令> orders = new List<命令>();
public void 設定訂單(命令 command)
{
if (command.ToString() == "DPExample.烤雞翅")
{
Console.WriteLine("服務生:雞翅沒有了,請點別的燒烤。");
} else
{
orders.Add(command);
Console.WriteLine("增加訂單:" + command.ToString() + " 時間:" + DateTime.Now.ToString());
}
}
public void 取消訂單(命令 command)
{
orders.Remove(command);
Console.WriteLine("取消訂單:" + command.ToString() + " 時間:" + DateTime.Now.ToString());
}
public void 通知執行()
{
foreach (命令 command in orders)
{
command.執行命令();
}
}
}
}


留言
張貼留言