这是在实际项目中遇到的需求,项目中使用了Java Swing画界面,开始时没有实现撤销重做,后期要求加入撤销重做功能。在网上查找到资料说这种撤销重做的操作一般通过Command模式来实现,在实现过程中参考了http://blog.csdn.net/turbochen/article/details/8087文章中的内容。
命令模式把一个请求或者操作封装到一个对象中,把发出命令的责任和执行命令的责任分割开,委派给不同的对象,可降低行为请求者与行为实现者之间耦合度。从使用角度来看就是请求者把接口实现类作为参数传给使用者,使用者直接调用这个接口的方法,而不用关心具体执行的那个命令。本文重点不是讲解命令模式,本人研究不多,里面各个角色也没分清楚,不多介绍,可参考http://www.uml.org.cn/sjms/200904151.asp。
使用命令模式当然要定义一个命令接口:
public interface Command {
public void execute(); // 执行命令和重做
public void undo(); // 执行撤销操作
}