我很难决定组件(要添加到对象内部的对象)应该如何通信和更改其“父”对象的数据。
例如,如果我有一个玩家对象和一个碰撞对象,我会将玩家(父)对象传递到碰撞对象中,并在适当的时候让碰撞对象更改玩家对象的属性。但是我该如何重写碰撞对象函数来改变播放器对象而不创建新的碰撞子类呢?
当碰撞对象检测到碰撞时,玩家父对象可以传递一个回调函数来运行吗?这是个好主意吗?基本上,我希望player对象包含一个组件数组,并对所有组件运行更新函数。
另外,一个组件与另一个组件通信的最佳方式是通过传递给它的播放器(父)对象吗?
提前谢谢。
发布于 2014-05-04 02:38:12
有很多设计模式,你可能想要在线查看。只需搜索“设计模式”,也许还有GoF --这是一群久负盛名的作者,他们撰写了第一批关于设计模式的书籍。
没有“完美”的方法--一切都取决于你的结构和实现的想法。
您可以查看Observer模式,但我建议您阅读整本书。
我通常不喜欢传递一个回调,这样一个孩子就可以修改它的父级。通常,继承树应该在另一个方向上-父继承树控制它的子代。这就是为什么有一个Controller模式,它决定如何处理每个对象。
您还可以让它们通过事件或观察者或任何您希望的方式进行通信,以使控制器类知道状态应该发生变化。
这真的取决于情况,但我基本上会分派事件,并获得一个公共控制器来决定要做什么以及使用哪个节点。还有一个您可能想要检查的State模式。
https://stackoverflow.com/questions/23447416
复制相似问题