游戏设计模式学习笔记(3)享元模式
参考:
《设计模式与游戏完美开发》
《游戏编程模式》(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
定义
- 享元模式,以共享的方式高效地支持大量的细粒度的对象。通过复用内存中已存在的对象,降低系统创建对象实例的性能消耗。
- “内在状态”:“只能读取而不能写入”的共享部分(模型的网格)
- “外在状态”:“不能共享”的部分(模型的位置)
[外链图片转存失败(img-juBSzmYS-1569164409776)(E:\csdn博客使用图片\DesignPatterns\005.png)]
同一个树模型,相同的网格,树皮,枝叶,拿来共享。
类图,时序图
享元模式包含如下角色:
- Flyweight: 抽象享元类
- 定义组件的操作接口
- ConcreteFlyweight: 具体享元类
- 产生可以共享的组件
- UnsharedConcreteFlyweight: 非共享具体享元类
- 单独工作的组件,不包含共享资源
- FlyweightFactory: 享元工厂类
- 产生和管理Flyweight组件
- 产生共享组件时,会放到管理容器内
应用场景
- 人物角色的基本属性,模型资源,跳跃高度等相同属性。
- 对象池,共享子弹。