Command 模式大概是最简单的设计模式了,说其简单是因为它形式上看起来非常简单,该模式仅由一个具有唯一功能特性的方法组成。
public inerface Command{
public void do();
}
Command 模式在事务操作上应用尤其广泛,例如数据库事务处理。假定现在要对数据库中的雇员信息表进行操作,可能涉及到增、删、改、查四种操作,这四种操作就可以统一由一个方法执行,稍微升级一下,添加一个validate() 方法进行数据校验,这个事务处理的类可以设计为
public interface Tansaction{
public void validate();
public void execute();
}
程序员只需要为每种事务处理,添加响应的接口实现类就行,实际调用中不需要考虑事务类型,保证了接口使用的统一。
另一个比较重要的作用为do/undo 处理。很多操作需要do 和 undo 配合使用,这时候Command 模式就显示出其优点来了。在do 操作时,保存当前处理的Command 堆栈,一旦调用undo 操作,从堆栈顶端获得Command 对象并作撤销处理。do 和 undo 操作的执行代码关联性总是很强的。