我有一個名爲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. 在xaml和aspx之間交換數據
- 3. 在Ruby和C++之間交換數據
- 4. 在網站之間交換數據
- 5. 在行之間交換MySQL數據
- 6. 在兩行數據之間交換值
- 7. 在interactive_mode和script_mode之間交換數據?
- 8. 在nodejs和Python之間交換數據
- 9. div之間的交換類
- 10. 重載操作符=在類之間交換數據
- 11. 如何在java類和android活動之間交換數據?
- 12. 活動之間交換數據
- 13. Rails引擎之間的交換數據
- 14. CPropertySheet屬性頁之間交換數據
- 15. 在兩個不同的WordPress數據庫之間交換數據
- 16. 在數組之間交換元素 - java
- 17. 轉換數據類型之間的C#
- 18. Android Studio:從類之間交換值(int)
- 19. 如何在ROS中的節點之間交換數據?
- 20. 在兩種語言之間交換數據
- 21. 如何在兩個python應用程序之間交換數據?
- 22. 如何在SQL Server中的兩列之間交換數據?
- 23. 在Android中的EditText之間交換數據
- 24. 如何在Android服務之間交換數據
- 25. iCloud可以用來在用戶之間交換數據嗎?
- 26. 在exe和服務之間交換安全數據
- 27. 在MPI進程之間交換數據(暈)
- 28. 如何在活動和佈局xml之間交換數據android
- 29. 在Ubuntu的2個USB端口之間交換數據
- 30. 在兩個iPhone子視圖之間交換數據
您可能希望包含代碼示例以使您的解釋更易於遵循。在它的表面上,你可以有'someObject.StateChanged(int newState)'和'Main.ChangeState(int newState)',但這取決於你的其他交互。例如,你可能想要採取一種事件方法...通常,我不希望'Main'類會做很多事情,所以聽起來你可能會錯過一些類... – forsvarir