命令模式將請求封裝成對象,以便使用不同的請求、隊列、或者日志來參數化其他對象。命令模式也支持可撤銷的操作。
Command Pattern類圖
- 命令模式將發出請求的對象和執行請求的對象解耦。
- 兩者間是通過命令對象進行溝通的。命令對象封裝了接收者的一個或者一組動作。
- 命令對象持有接收者對象的引用。
- 調用者通過調用命令對象的execute()方法發出請求,使得接收者的動作被調用。
- 命令可以支持撤銷,具體做法為接收者對象實現undo()方法回撤狀態。
- 宏命令持有一個命令集,實現調用多個命令。
- 命令也可以用來實現日志和事務系統,通過undo()方法實現食物回滾。