命令模式(Command Pattern)

   命令模式可以在一个对象中封装一个请求,这样,我们可以把方法调用作为对象进行管理,并在满足时序关系或者满足某些条件的情况下,传递这些对象,并且调用这些对象。[Steve.Metsker《C#设计模式》]
  将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。[GOF 《设计模式》]
  命令模式根本目的在于将命令的请求和命令的响应现实进行解耦。一个请求根据情况可以有不同的响应。
如图所示,Command类抽象了所需要的二个操作,并在CalculatorCommand类中实现了这二个操作。User对象在每执行Computer方法一次时,都将真正完成此功能的Command对象保存在commands列表中,并保存当前Command对象的位置。这样,当User执行Redo或Undo的时候,实际是调用了当前Command对象的二个对应方法来完成功能。一个系统中往往存在多个Command抽象类的子类,但User对象只需要调用当前对象的相应方法,而不管当前的对象到底是Command抽象类的子类。
  另一种实现方法是利用委托机制。为一个请求的委托提供不同的实现,从而得到不同的请求响应。

你可能感兴趣的:(Design,Patterns,command,设计模式,user,c#)