命令模式
Posted ningxinjie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了命令模式相关的知识,希望对你有一定的参考价值。
命令模式旨在将"行为请求者"与"行为实现者"解耦
如何解决:通过调用者调用接受者执行命令,顺序:调用者→接受者→命令。
关键代码:定义三个角色:1、received 真正的命令执行对象 2、Command 3、invoker 使用命令对象的入口
需要基本使用类,抽象命令与具体命令,通过中介者调用命令指向实用类的方法。
#region 基本使用类 public class Document { //具体操作 public void Display() { Console.WriteLine("具体操作"); } public void Undo() { Console.WriteLine("撤销"); } public void Redo() { Console.WriteLine("恢复"); } } #endregion
#region 抽象命令 public abstract class DocumentCommand { protected Document _document; public DocumentCommand(Document document) { this._document = document; } public abstract void Execute(); } #endregion
#region 调用者 public class DocumentInvoker { List<DocumentCommand> list = new List<DocumentCommand>(); public DocumentInvoker(params DocumentCommand[] documentcommands) { foreach (DocumentCommand item in documentcommands) { list.Add(item); } } public void Execute() { foreach (DocumentCommand item in list) { item.Execute(); } } } #endregion
static void Main(string[] args) { Document doc=new Document();//使用类的实例 DocumentCommand d1 = new DisplayCommand(doc);//命令类1 UndoCommand d2 = new UndoCommand(doc);////命令类1 DocumentInvoker di = new DocumentInvoker(d1,d2);//将这两个命令传给调用者 di.Execute(); Console.ReadKey(); }
基本类正常书写,命令类中内部有使用类,通过方法实现调用使用类的方法,调用者通过调用命令类,触发内部方法,从而触发基本类的方法!
(这种类内部有另一个类的私有成员,很常见了,要牢记!!!)
以上是关于命令模式的主要内容,如果未能解决你的问题,请参考以下文章