我有一个名为Main的主类,在Main类中有一个名为State的变量,其类型为int
。状态变量包含一个状态ID,让程序知道它处于哪个状态(菜单,指令屏幕......)在Main类中,我有一个从Sprite类启动的对象。现在我的问题是如何告诉对象状态已经切换(这个很容易,我可以轻松地制作这个,但下一部分给我带来问题),对象如何告诉Main类他想要的切换状态?
答案 0 :(得分:2)
这是我从你的问题中理解的,
Main
是调用Sprite
实例方法State
确定Sprite
实例在这种情况下,Sprite
类应该包含一个名为State
的静态属性(最好是enum
而不是int
)。
实例方法有责任更新状态变量。完成实例方法的执行后,调用者可以检查实例所处的状态,然后适当地确定下一个操作过程。
更好的方法是根本不暴露状态(除非外部对象需要使用它)。在您的情况下,似乎状态仅用于确定执行的方法(我猜你有一个switch
语句来执行此操作)。
如果要实例基于其自身状态执行特定方法,则可以将此决策留给实例本身,而不是由控制器决定。该实例可以有一个方法(比如Update()
或Execute()
),它根据操作的上下文执行操作(如菜单选项等)。此方法可以根据静态state
成员确定要执行的内部方法。