这是一篇关于 Cocos2d-x 中各种设计模式的文章,主要内容如下:
- Introduction:对 Cocos2d-x 开发者和模式研究人员有兴趣,是一个简短的回顾,重点展示特定模式在 Cocos2d-x 中的应用,不详细描述每个模式。
Creational Patterns:
- Prototype:定义复制对象的接口,通过复制对象状态创建新对象,如对 Animation 对象调用
clone()
可创建具有相同参数的对象。 - Singleton:未详细展开。
- Prototype:定义复制对象的接口,通过复制对象状态创建新对象,如对 Animation 对象调用
Structural Patterns:
- Flyweight:用于单独使用相同资源而不创建大量相同资源实例,以有效利用内存,如显示文本时的
Label
类,FontAtlasCache
管理字体,FontAtlas
存储显示符号的数据,多个Label
对象可使用同一FontAtlas
实例,多个从同一文件创建的精灵可引用同一纹理,以Cache
结尾的类通常用于单独使用对象。 - Bridge:将抽象与实现解耦,常用于实现跨平台对象,如
EditBox
、Downloader
、GLView
、AudioEngine
、Controller
和WebView
。 - Composite:构建树并统一访问树组件,
Composite
是由多个Component
继承的复合对象,Node
既是Composite
又是Component
,可用于创建图形场景。
- Flyweight:用于单独使用相同资源而不创建大量相同资源实例,以有效利用内存,如显示文本时的
Behavioral Patterns:
- Command:将请求封装为对象,可用于创建渲染器队列,去除对象内部的 OpenGL API 使用,便于过渡到其他图形 API。
- Observer:定义对象之间的一对多依赖关系,
EventDispatcher
是主题,EventListener
是观察者,导演通过EventDispatcher
通知观察者状态变化,还可创建自定义事件,Director
定义了一些有用的自定义事件,如EVENT_BEFORE_UPDATE
。
- Decoupling Patterns:基于组件的架构,每个
Node
有组件容器,组件继承自Component
类,包含对所属Node
的引用、更新方法和序列化方法。 Optimization Patterns:
- Data Locality:通过更方便的数据放置来加速内存访问,常用于创建粒子,如
ParticleSystem
中ParticleData
存储所有粒子数据,按顺序放置数据以快速处理并避免缓存未命中。 - Dirty Flag:在很多类中常见,将一些慢操作推迟到实际需要结果时,如
Scene
、Camera
、Node
、Label
、ParticleSystem
、Sprite
等类中。
- Data Locality:通过更方便的数据放置来加速内存访问,常用于创建粒子,如
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。