游戏设计模式学习笔记(18)访问者模式
参考:
《设计模式与游戏完美开发》
《游戏编程模式》(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/53240330
runoob.com 设计模式:https://design-patterns.readthedocs.io/zh_CN/latest/structural_patterns/decorator.html
定义
- 定义一个能够在一个对象结构中对于所有元素执行的操作。访问则让你可以定义一个新的操作,而不必更改到被操作元素的类接口。
- 在数据基类里面有一个方法接受访问者,将自身引用传入访问者。
- 调用的时候,遍历所有加入到容器的类,调用指定方法。
何时使用
- 需要对一个对象结构中的对象进行很多不同的并且不相关的操作,而需要避免让这些操作"污染"这些对象的类,使用访问者模式将这些封装到类中。
优缺点
- 优点
- 符合单一职责原则。
- 优秀的扩展性。
- 灵活性。
- 缺点
- 具体元素对访问者公布细节,违反了迪米特原则。
- 具体元素变更比较困难。
- 违反了依赖倒置原则,依赖了具体类,没有依赖抽象。
应用
- 配合观察者模式,实现事件系统,即发了个事件,遍历所有访问者调用方法。
- 游戏需要遍历需要所有对象的,都能用这个模式。