我有一个名为Main的主类,在Main类中有一个名为State的变量,它的类型为int
。状态变量包含一个状态ID,它让程序知道它在哪个状态(菜单,指令屏幕......)在Main类中,我有一个从Sprite类发起的对象。现在我的问题是如何告诉对象状态已经切换(这个很容易,我可以很容易地做出这个状态,但下一个部分给我提出了问题),以及对象如何告诉Main类他想要切换状态?在类之间交换数据
Q
在类之间交换数据
0
A
回答
2
这是我从你的问题理解,
Main
是控制器类调用Sprite
实例方法- 的
State
确定是呼吁Sprite
实例的方法
在这种情况下,Sprite
类应该包含一个名为State
的静态属性(最好这应该是enum
而不是int
)。
更新状态变量是实例方法的责任。在完成实例方法的执行后,调用者可以检查实例所处的状态,然后适当地确定下一个操作过程。
更好的方法是根本不公开状态(除非需要被外部对象使用)。在你的情况下,它似乎只是用来确定执行的方法(我猜你有一个switch
语句来做到这一点)。
如果您想要实例根据自己的状态执行特定方法,那么您可以将此决定留给实例本身,而不是由控制器决定。实例可以有一个方法(例如Update()
或Execute()
),它们根据操作的上下文执行操作(如菜单选项等)。该方法可以根据静态成员state
决定执行哪种内部方法。
+1
是的,你是完全正确,我是OOP的新手,我的想法是主类应该控制信息,它是应该这样做的对象,主类应该只在需要时才检查。 – LordShigi
相关问题
- 1. Android Studio:在类之间交换数据
- 2. 在两行数据之间交换值
- 3. 在xaml和aspx之间交换数据
- 4. 在网站之间交换数据
- 5. 在nodejs和Python之间交换数据
- 6. 在interactive_mode和script_mode之间交换数据?
- 7. 重载操作符=在类之间交换数据
- 8. 活动之间交换数据
- 9. CPropertySheet属性页之间交换数据
- 10. 在两个不同的WordPress数据库之间交换数据
- 11. 在数组之间交换元素 - java
- 12. 转换数据类型之间的C#
- 13. Android Studio:从类之间交换值(int)
- 14. 如何在使用终端的程序之间交换数据?
- 15. 如何在FeatureStore和AJAX后端之间交换数据?
- 16. 如何在SQL Server中的两列之间交换数据?
- 17. 通过蓝牙在NSDictionaries之间交换数据
- 18. 如何在Android服务之间交换数据
- 19. 通过Wifi在电脑和Android手机之间交换数据
- 20. 在TabActivity及其子活动之间交换数据。可能?
- 21. 在iOS应用程序之间交换数据
- 22. 在两个iPhone子视图之间交换数据
- 23. 在父组件和子组件之间交换数据
- 24. 如何在两个python应用程序之间交换数据?
- 25. 以angularjs在控制器之间交换数据
- 26. 通过ActiveSync在应用程序之间进行数据交换
- 27. 如何在Objective-C和PHP之间交换数据
- 28. 在整数类型之间转换
- 29. 在类之间切换
- 30. Android之间交换数据之间运行的异步服务器
您可能希望包含代码示例以使您的解释更易于遵循。在它的表面上,你可以有'someObject.StateChanged(int newState)'和'Main.ChangeState(int newState)',但这取决于你的其他交互。例如,你可能想要采取一种事件方法...通常,我不希望'Main'类会做很多事情,所以听起来你可能会错过一些类... – forsvarir