类图
代码
Command
1 | interface Command{ |
Receiver
1 | class Receiver{ |
ConcreteCommand
1 | /** |
1 | /** |
1 | class MarcoCommand implements Command{ |
Invoker
1 | class Invoker{ |
测试类
1 | public class Main { |
运行结果
1 | 执行操作1 |
总结
概述
Receiver实际上就是操作实体
Command就是操作执行的封装,抽象为命令,基于此可以实现宏命令,例子中MacroCommand的实现
Invoker实际上就是一个操作者,它可以用来做一些command操作记录,以达到撤销、重做操作
优点
命令模式通过把实际操作进行封装,通过操作者,可以很方便的实现一些重做、队列化、日志化等操作,从而使得系统更加灵活
对于宏操作、撤销、重试等一些系统的基础功能都是使用命令模式完成的