设计模式笔记(十九) —— 命令模式

命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请示排队或记录请求日志,以及支持可撤消的操作。
     优点:第一,它能够较容易的设计一个命令队列;第二,在需要的情况下,可以较容易地将命令记入日志;第三,允许接收请求的一方是否要否决请求。第四,可以容易地实现对请求的撤消和重做;第五,由于加进新的具体命令类不影响其它的类,因此增加新的具体命令类很容易。
     命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分割开。 

  1. using System;
  2. using System.Collections.Generic;
  3. /** 概述
  4.  * 命令模式(Command):将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请示排队或记录请求日志,以及支持可撤消的操作。
  5.  * 优点:第一,它能够较容易的设计一个命令队列;第二,在需要的情况下,可以较容易地将命令记入日志;第三,允许接收请求的一方是否要否决请求。第四,可以容易地实现对请求的撤消和重做;第五,由于加进新的具体命令类不影响其它的类,因此增加新的具体命令类很容易。
  6.  * 命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分割开。
  7.  */
  8. namespace StuDesignMode.Command
  9. {
  10.     #region 命令模式
  11.     abstract class AbsCommand
  12.     {
  13.         protected Receiver _receiver;
  14.         public AbsCommand(Receiver receiver)
  15.         {
  16.             _receiver = receiver;
  17.         }
  18.         public abstract void Execute();
  19.     }
  20.     class ConcreteCommand : AbsCommand
  21.     {
  22.         public ConcreteCommand(Receiver receiver) : base(receiver) { }
  23.         public override void Execute()
  24.         {
  25.             this._receiver.Action();
  26.         }
  27.     }
  28.     class Invoker
  29.     {
  30.         private AbsCommand _command;
  31.         public void SetCommand(AbsCommand command)
  32.         {
  33.             this._command = command;
  34.         }
  35.         public void ExecuteCommand()
  36.         {
  37.             this._command.Execute();
  38.         }
  39.     }
  40.     class Receiver
  41.     {
  42.         public void Action()
  43.         {
  44.             Console.WriteLine("执行请求!");
  45.         }
  46.     }
  47.     class ClientTest
  48.     {
  49.         static void Main(string[] args)
  50.         {
  51.             Receiver re = new Receiver();
  52.             AbsCommand command = new ConcreteCommand(re);
  53.             Invoker i = new Invoker();
  54.             i.SetCommand(command);
  55.             i.ExecuteCommand();
  56.         }
  57.     }
  58.     #endregion
  59. }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值