- 一、角色
- 抽象命令类(Command):所有具体命令的抽象基类
- 具体命令类(ConcreteCommand):具体命令类,实现具体命令方法
- 调用者(Invoker):命令调用者
- 接受者(Receiver):命令接受者
- 二、适用场景
- 系统需要将请求调用者和请求接收者解耦,使得调用者和接收者不直接交互。请求调用者无须知道接收者的存在,也无须知道接收者是谁,接收者也无须关心何时被调用
- 系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作
- 系统需要将一组操作组合在一起形成宏命令
- 三、实例
- 图1是一个股票交易的实例,其中Order是抽象命令接口,BuyStock和SellStock是具体的命令实现,Broker既是命令接受者也是命令调用者,它通过takeOrder接受命令,通过placeOrders调用命令
- 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/command
图-1