命令模式

来源:互联网 发布:网络暴力电影 编辑:程序博客网 时间:2024/06/05 03:31

命令模式就是将一系列的方法调用封装,用户只需调用一个方法执行,那么所有这些被封装的方法就会被挨个执行调用,从而进行解耦,从而更具灵活性。将请求封装成对象,用户使用不同的请求把客户端参数化,对请求排队或记录请求日志,以及支持可撤销的操作。


需要抽象出待执行的动作,然后以参数的形式提供出来。需要支持取消操作。需要支持事务操作。支持修改日志功能,当系统崩溃时,这些修改可以重做。


命令模式通用UML:


命令模式实体UML:


关于撤销和重做功能:通过在Invoker中设置一个命令列表来存储使用过的命令,然后使用一个current指示器指向命令列表,重做则current=current+1,撤销则current=current-1。对象可以响应命令,或将命令交给它的从属对象,从而实现一个责任链模式。当命令是无状态的纯粹行为,有多个实例是浪费内存的,可以使用享元模式。


命令模式在生活中的应用简直不要太多,遥控器就是很好的例子。在游戏里的控制器也是很好的例子。



0 0