《我所理解的cocos2dx》第十六章运行时游戏对象模型
以对象为中心
面向对象
刚开始对象的类层次结构非常简单,随着设计的推进,层次结构就会在纵横方向不断膨胀,形成一个十分庞大的层次结构
组件模型
优点
- 没有复杂层级的结构问题
- 没有多继承的问题
- 没有分类学的烦恼等等
- 属性间没有依赖,便于扩展和修改
- 更有效的利用内存,每个对象占用的内存实际上就是他必须要定义的属性,而不会像继承那样会导致一些子类含有大量的无用属性
- 在内存布局上,所有相同类型的属性实例在内存中是连续存储的,把数据连续存储于内存中,能够减少或者消除缓存命中失败
- 更容易实现数据驱动
缺点
- 当游戏对象由大量的属性构成时,属性之间的关系可能变得比较混乱
- 其次,单凭一些细粒度的属性很难实现比较复杂的行为,因此,根据实际需求,有些属性的粒度通常会比较大
- 由于属性存在于单独的属性表中,仅保存一个游戏对象的唯一标志符,很难整体了解游戏对象而进行有效的调试,因此在Genius-x框架中每个属性b保存着游戏对象的指针,可以查看其他属性,方便调试
Entity Component System (ECS)框架
以属性(数据)为中心的软件架构,遵循合成由于继承的思想,采用数据库类似的结构来存储游戏对象
属性结构
.