首页 > 其他 > 详细

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

时间:2017-11-14 18:21:02      阅读:215      评论:0      收藏:0      [点我收藏+]

命令模式

类图:

 技术分享

技术分享

常用的实现方式:

 指令处理对象

技术分享
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

 使用场景:

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

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

 

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

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

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