首页 > 其他 > 详细

命令模式

时间:2020-01-15 09:16:14      阅读:71      评论:0      收藏:0      [点我收藏+]

命令模式旨在将"行为请求者"与"行为实现者"解耦

如何解决:通过调用者调用接受者执行命令,顺序:调用者→接受者→命令。

 关键代码:定义三个角色: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();
        }

技术分享图片 

基本类正常书写,命令类中内部有使用类,通过方法实现调用使用类的方法,调用者通过调用命令类,触发内部方法,从而触发基本类的方法!

(这种类内部有另一个类的私有成员,很常见了,要牢记!!!)

命令模式

原文:https://www.cnblogs.com/ningxinjie/p/12194861.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!