在类之间交换数据

本文关键字:数据 交换 之间 | 更新日期: 2023-09-27 18:07:24

我有一个名为main的主类,在该主类中有一个名为State的变量,它是int类型。状态变量包含一个状态ID,它让程序知道它处于哪个状态(菜单,指令屏幕…)在Main类中,我有一个来自Sprite类的对象。现在我的问题是,如何告诉对象状态已经切换(这个很简单,这个也很容易,但下一部分会给我带来问题),以及对象如何告诉Main类他想要切换状态?

在类之间交换数据

这就是我从你的问题中理解的,

  • Main是调用Sprite实例方法的控制器类
  • State决定在Sprite实例上调用的方法
在这种情况下,Sprite类应该包含一个名为State的静态属性(最好是enum而不是int)。

更新状态变量是实例方法的责任。在完成实例方法的执行后,调用者可以检查实例所处的状态,然后适当地确定下一个操作过程。

一个更好的方法是根本不公开状态(除非需要由外部对象使用)。在您的情况下,似乎状态仅用于确定执行的方法(我猜您有switch语句来执行此操作)。

如果你想让实例根据它自己的状态执行一个特定的方法,那么你可以把这个决定留给实例本身,而不是让控制器来决定。实例可以有一个方法(比如Update()Execute()),该方法根据操作的上下文(比如菜单选项等)执行操作。该方法可以根据静态state成员决定执行哪个内部方法。