Jexi开发 (14) 应用Command模式

原创 2004年08月11日 20:44:00

Command模式用于封装用户操作再合适不过了!定义Command接口:

public interface Command {
    boolean execute();
    void unexecute();
    String toString();
}

toString()方法返回命令描述,可以在工具栏的Undo/Redo中提示用户。

单态类CommandManager用于创建、执行和撤销命令:

Command cmd = new DeleteCommand(...);
if(cmd.execute()) {
    addToCommandList(cmd); // add to undo list
}

如果execute()返回成功,表示命令执行成功,就将此执行过的命令放到List中,将来某个时候可以通过unexecute()撤销该命令实现Undo功能,这需要每个命令在执行前先保存相关数据以便在将来恢复。

为了简便我们尚未实现unexecute(),定义的命令如下:

InsertCommand:插入一个字符。
DeleteCommand:删除一个字符或选中文字。
SplitCommand:用户按Enter相当于把当前段落分成两部分。
FormatCommand:格式化选中文字。

以上命令已经可以实现基本的编辑功能,至于其它命令如Copy,Paste等完全可以以后再添加,因为用户操作被一一封装,因此将来扩展极其容易。

最新界面:

Command模式详解--设计模式(19)

Memento模式来源:       Command模式通过将请求封装到一个对象(Command)中,并将请求的接受者存放到具体的ConcreteCommand类中(Receiver)中,从而实现调用...
  • fanyun_01
  • fanyun_01
  • 2016年07月06日 08:58
  • 1446

设计模式(14) 命令模式(Command)C++实现

问题聚焦: 感觉后面的一些模式都比较抽象,每个模式都尽量写一个demo辅助理解。 命令行模式主要是将请求本身封装为对象,从而使你可用不同的请求参数化客户类。 解耦了调用操作的对...
  • zs634134578
  • zs634134578
  • 2014年03月11日 19:41
  • 1781

JAVA设计模式之 命令模式【Command Pattern】

一、概述     命令模式可以将请求发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。核心在于引入了命令类,通过命令类来降...
  • l416112167
  • l416112167
  • 2014年11月19日 15:58
  • 1798

设计模式(14)——Command(命令)

Command模式是什么? Command将一个请求封装为一个对象,从而使得可以用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。 Command模式...
  • Paul_Huang_2011
  • Paul_Huang_2011
  • 2015年05月11日 22:15
  • 347

【设计模式 - 14】之命令模式(Command)

1      模式简介 命令模式的定义: 命令模式将命令封装成对象,从而使调用一个命令变为调用一个对象的指定方法。   命令模式的优点: 1)        降低了系统耦合度; 2)   ...
  • ITGungnir
  • ITGungnir
  • 2016年12月11日 09:40
  • 175

Observer与Command模式在VTK类库设计中的应用研究

  • 2013年08月21日 17:04
  • 235KB
  • 下载

设计模式(14)-行为型-命令模式(Command)

概述将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤消的操作。适用性抽象出待执行的动作以参数化某对象,你可用过程语言中的回调(c a l l b...
  • iihero
  • iihero
  • 2012年11月22日 06:29
  • 1879

23种设计模式(14)_行为型_命令模式(Command Pattern)

定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。命令模式的封装性很好:每个命令都被封装起来,对于客户端来说,需要什么功能...
  • heyuchang666
  • heyuchang666
  • 2015年12月27日 16:39
  • 552

设计模式(14) 命令模式(Command)C++实现

问题聚焦: 感觉后面的一些模式都比较抽象,每个模式都尽量写一个demo辅助理解。 命令行模式主要是将请求本身封装为对象,从而使你可用不同的请求参数化客户类。 解耦了调用操作的对...
  • zs634134578
  • zs634134578
  • 2014年03月11日 19:41
  • 1781

Observer与Command模式在VTK类库设计中的应用研究

  • 2012年12月06日 23:18
  • 233KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Jexi开发 (14) 应用Command模式
举报原因:
原因补充:

(最多只允许输入30个字)