码迷,mamicode.com
首页 > 其他好文 > 详细

设计模式面对面之命令模式

时间:2017-11-14 18:35:47      阅读:184      评论:0      收藏:0      [点我收藏+]

标签:日志   span   on()   ide   nbsp   set   name   指令对象   adc   

命令模式

类图:

 技术分享

技术分享

常用的实现方式:

 指令处理对象

技术分享
public interface IReceiver  {

        void Operation();
    }//end IReceiver
View Code
技术分享
public class ReceiverA : IReceiver {

        public ReceiverA(){

        }

        public void Operation(){
            Console.WriteLine("由ReceiverA处理");
        }

    }//end ReceiverA
View Code
技术分享
public class ReceiverB : IReceiver {

        public ReceiverB(){

        }

        public void Operation(){
            Console.WriteLine("由ReceiverB处理");
        }

    }//end ReceiverB
View Code

指令对象

技术分享
public interface ICommand  {

        void Execute();
    }//end ICommand
View Code
技术分享
public class CommandRealizeA : ICommand {

        private readonly IReceiver _receiver;

        public CommandRealizeA(){
            _receiver=new ReceiverA();
        }

        public void Execute(){
            _receiver.Operation();
        }

    }//end CommandRealizeA
View Code
技术分享
public class CommandRealizeB : ICommand {

        private readonly IReceiver _receiver;

        public CommandRealizeB()
        {
            _receiver=new ReceiverB();
        }

        public void Execute(){
            _receiver.Operation();
        }

    }//end CommandRealizeB
View Code

调用对象

技术分享
public class Invoker {

        private ICommand _command;

        public Invoker(){
            _command=new CommandRealizeA();//默认指令
        }

        public void Invoke()
        {
            _command.Execute();
        }

        /// 
        /// <param name="command"></param>
        public void SetCommand(ICommand command)
        {
            _command = command;
        }

    }//end Invoker
View Code

 使用场景:

 当每次请求或者动作会出现一连串操作,此时可以考虑。比如提交表单后台涉及到数据库操作,日志操作,缓存操作等等,这些操作可以用命令模式去控制。

 命令模式将命令的调用者(发出者),执行者,处理着,从一个紧耦合的动作,分离开来,主要用来复杂的动作解耦和指令(命令)管理。

 

设计模式面对面之命令模式

标签:日志   span   on()   ide   nbsp   set   name   指令对象   adc   

原文地址:http://www.cnblogs.com/dujq/p/7832927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!