[设计模式]命令模式
命令模式将“请求”封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。
命令模式把方法调用封装起来,所以调用此方法的对象不需要关心事情是如何进行的,只要知道如何使用包装成成形的方法类完成就可以。用命令对象来说就是,命令对象将动作和接收者包装其中,这个对象对外只暴露一个execute()方法,当此方法被调用的时候,接收者会进行这个具体动作,但是外面的其他对象不知道究竟哪个接收者进行了什么动作,只知道调用execute()方法就会达到请求的目的。
类图:
撤销功能的实现,命令接口加入一个undo()方法就可以。并使调用者保存前一次的命令或者所有的命令堆栈。
还可以制造一个新命令执行其他一堆命令,只要命令对象包含一个命令对象列表,在execute()方法中循环调用这个列表中每个命令对象的execute()方法即可。
参考:《Head First设计模式》
< 原创文章如转载,请注明出处。 />