命令模式(Command Pattern)
2006-10-21 23:58
330 查看
命令模式可以在一个对象中封装一个请求,这样,我们可以把方法调用作为对象进行管理,并在满足时序关系或者满足某些条件的情况下,传递这些对象,并且调用这些对象。[Steve.Metsker《C#设计模式》]
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。[GOF 《设计模式》]
命令模式根本目的在于将命令的请求和命令的响应现实进行解耦。一个请求根据情况可以有不同的响应。
如图所示,Command类抽象了所需要的二个操作,并在CalculatorCommand类中实现了这二个操作。User对象在每执行Computer方法一次时,都将真正完成此功能的Command对象保存在commands列表中,并保存当前Command对象的位置。这样,当User执行Redo或Undo的时候,实际是调用了当前Command对象的二个对应方法来完成功能。一个系统中往往存在多个Command抽象类的子类,但User对象只需要调用当前对象的相应方法,而不管当前的对象到底是Command抽象类的子类。
另一种实现方法是利用委托机制。为一个请求的委托提供不同的实现,从而得到不同的请求响应。
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。[GOF 《设计模式》]
命令模式根本目的在于将命令的请求和命令的响应现实进行解耦。一个请求根据情况可以有不同的响应。
如图所示,Command类抽象了所需要的二个操作,并在CalculatorCommand类中实现了这二个操作。User对象在每执行Computer方法一次时,都将真正完成此功能的Command对象保存在commands列表中,并保存当前Command对象的位置。这样,当User执行Redo或Undo的时候,实际是调用了当前Command对象的二个对应方法来完成功能。一个系统中往往存在多个Command抽象类的子类,但User对象只需要调用当前对象的相应方法,而不管当前的对象到底是Command抽象类的子类。
另一种实现方法是利用委托机制。为一个请求的委托提供不同的实现,从而得到不同的请求响应。
相关文章推荐
- 命令模式(Command Pattern)
- 4.4 《硬啃设计模式》 第21章 神奇的Undo与Redo - 命令模式(Command Pattern)
- Java之命令模式(Command Pattern)
- 命令模式(Command Pattern)
- 设计模式——命令模式 (Command Pattern)
- 《Head First Design Patterns》笔记六:命令模式(Command Pattern)
- 设计模式学习--命令模式(Command Pattern)
- 深入浅出设计模式——命令模式(Command Pattern)
- 设计模式15:Command Pattern (命令模式)
- 设计模式 - 命令模式(command pattern) 多命令 详解
- 命令模式(Command Pattern)
- 设计模式之命令模式(Command Pattern)
- 我所理解的设计模式(C++实现)——命令模式(Command Pattern)
- 【16】命令模式(Command Pattern)
- 设计模式笔记8:命令模式(Command Pattern)
- 命令模式(Command Pattern)
- 我所理解的设计模式(C++实现)——命令模式(Command Pattern)
- Command and Query Responsibility Segregation (CQRS) Pattern 命令和查询职责分离(CQRS)模式
- C#命令模式(Command Pattern)实例教程
- 设计模式【命令模式Command Pattern】