对于我的游戏,我使用状态模式来处理我的屏幕。屏幕需要更新和渲染每个帧。游戏循环在Game类中。
但我还需要Entity类中的更新和呈现方法。我应该在Screen and Entity类中使用接口(例如FrameProcess)吗?或者我可以这样离开(见图)?
OOP中最好的实践是什么?那有什么模式吗?
此问题的基本UML:
答案 0 :(得分:2)
在这种情况下,它取决于“实体”的含义。如果一个实体涵盖了可渲染和可更新的所有内容,那么为两者创建一个虚函数就没问题了(如果你计划派生其他类型的实体,比如车辆或武器)。如果您有除Entity之外的其他可渲染和可更新类型,我认为界面将是更好的选择。
您最好还是可以在游戏设备上查看https://gamedev.stackexchange.com/以获取更多问答答案。
答案 1 :(得分:1)
我将为update()
类中的render()
和Entity
方法创建纯虚函数,并让从其继承的类定义自己的行为,这将使系统在多态的方式。然后在Game
类或其他类型的处理程序类中调用update()
和draw()
方法,这些方法基于使用State模式决定它的系统的当前状态。
顺便说一下,它在http://gameprogrammingpatterns.com/state.html以非常清晰的方式更详细地讲述了状态模式及其示例用法