我很难决定组件(对象内部添加的对象)应如何通信并改变其父母的数据。对象
例如,如果我有一个玩家对象和一个碰撞对象,我会将玩家(父)对象传递给碰撞对象,并让碰撞对象在适当的时候改变玩家对象的属性。但是,如何在不创建新的碰撞子类的情况下重写碰撞对象函数来改变玩家对象呢?
当碰撞对象检测到碰撞时,玩家父对象是否可以在回调函数中传递?这是个好主意吗?基本上我希望播放器对象包含一组组件并在所有组件上运行更新功能。
组件与另一个组件通信的最佳方式是通过传递给它的播放器(父)对象吗?
提前致谢。
答案 0 :(得分:1)
您可能需要在线查看很多设计模式。只需搜索'设计模式'也许是GoF - 它是一群成熟的作家,是第一本关于它的书籍之一。
没有完美的'这样做的方式 - 一切都取决于你的结构和实现的想法。
您可以查看Observer
模式,但我建议您阅读整本书。
我通常不喜欢传递一个回调,以便孩子可以修改它的父母。通常,继承树应该在另一个方向 - 父母控制它的孩子。这就是为什么有Controller
模式,决定如何处理每个对象。
您还可以通过事件或观察者或任何您希望的方式进行通信,以使控制器类知道状态应该发生变化。
这实际上取决于具体情况,但我基本上会调度事件并获得一个通用控制器来决定做什么以及使用哪个节点。您还可以查看状态模式。