游戏设计模式学习笔记(2)命令模式
参考:
《设计模式与游戏完美开发》
《游戏编程模式》(https://github.com/tkchu/Game-Programming-Patterns-CN)
《图说设计模式( Graphic Design Patterns)》(https://github.com/me115/design_patterns)
【【游戏设计模式】之二 论撤消重做、回放系统的实现:命令模式】浅墨_毛星云: https://blog.csdn.net/poem_qianmo/article/details/52663057
定义
- 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化; 对请求排队或记录请求日志,以及支持可撤销的操作。
- 命令模式是一种回调的面向对象实现。
类图,时序图
命令模式包含如下角色:
- Command: 抽象命令类
- ConcreteCommand: 具体命令类,包含命令参数,和执行命令功能
- Invoker: 调用者,管理命令的容器,要求命令执行
- Receiver: 接收者,封装在ConcreteCommand,真正执行功能的类对象
- Client:客户类,产生命令,设置命令给Receiver
优缺点
-
优点
- 降低系统的耦合度。
- 新的命令可以很容易地加入到系统中。
- 可以比较容易地设计一个命令队列和宏命令(组合命令)。
- 可以方便地实现对请求的Undo和Redo。
-
缺点
- 使用命令模式可能会导致某些系统有过多的具体命令类。因为针对每一个命令都需要设计一个具体命令类,因此某些系统可能需要大量具体命令类,这将影响命令模式的使用。
应用场景
- 网络通信时候,客户端服务器之间数据封包传递。
- 资源异步加载的命令队列。
应用场景
- 网络通信时候,客户端服务器之间数据封包传递。
- 资源异步加载的命令队列。
- 游戏录制和回放功能。