命令模式(Command Pattern):将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务(Transaction)模式。
模式角色与结构:(可以有多个ConcreteCommand,分别保存多个Receiver的引用)
示例代码:
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CSharp.DesignPattern.CommandPattern { class Program { static void Main(string[] args) { Command command = new ConcreteCommand(); Invoker invoder = new Invoker(command); // 功能键 invoder.Call(); Console.ReadLine(); } } // 调用者 class Invoker { private Command command; // 构造注入 public Invoker(Command command) { this.command = command; } public void Call() { command.Execute(); } } // 抽象命令 abstract class Command { public abstract void Execute(); } // 具体命令类 class ConcreteCommand : Command { private Receiver receiver; // 维持对请求接收者的引用 public ConcreteCommand() { receiver = new Receiver(); } public override void Execute() { receiver.Action(); } } // 接收者类 class Receiver { public void Action() { Console.WriteLine("Receiver Action..."); } } }