Cocos2d-x 中的设计模式

这是一篇关于 Cocos2d-x 中各种设计模式的文章,主要内容如下:

  • Introduction:对 Cocos2d-x 开发者和模式研究人员有兴趣,是一个简短的回顾,重点展示特定模式在 Cocos2d-x 中的应用,不详细描述每个模式。
  • Creational Patterns

    • Prototype:定义复制对象的接口,通过复制对象状态创建新对象,如对 Animation 对象调用clone()可创建具有相同参数的对象。
    • Singleton:未详细展开。
  • Structural Patterns

    • Flyweight:用于单独使用相同资源而不创建大量相同资源实例,以有效利用内存,如显示文本时的Label类,FontAtlasCache管理字体,FontAtlas存储显示符号的数据,多个Label对象可使用同一FontAtlas实例,多个从同一文件创建的精灵可引用同一纹理,以Cache结尾的类通常用于单独使用对象。
    • Bridge:将抽象与实现解耦,常用于实现跨平台对象,如EditBoxDownloaderGLViewAudioEngineControllerWebView
    • Composite:构建树并统一访问树组件,Composite是由多个Component继承的复合对象,Node既是Composite又是Component,可用于创建图形场景。
  • Behavioral Patterns

    • Command:将请求封装为对象,可用于创建渲染器队列,去除对象内部的 OpenGL API 使用,便于过渡到其他图形 API。
    • Observer:定义对象之间的一对多依赖关系,EventDispatcher是主题,EventListener是观察者,导演通过EventDispatcher通知观察者状态变化,还可创建自定义事件,Director定义了一些有用的自定义事件,如EVENT_BEFORE_UPDATE
  • Decoupling Patterns:基于组件的架构,每个Node有组件容器,组件继承自Component类,包含对所属Node的引用、更新方法和序列化方法。
  • Optimization Patterns

    • Data Locality:通过更方便的数据放置来加速内存访问,常用于创建粒子,如ParticleSystemParticleData存储所有粒子数据,按顺序放置数据以快速处理并避免缓存未命中。
    • Dirty Flag:在很多类中常见,将一些慢操作推迟到实际需要结果时,如SceneCameraNodeLabelParticleSystemSprite等类中。
阅读 7
0 条评论