我有一個類(活動)在一個Android應用程序,它有一堆示例數學問題。您可以通過按下更改問題計數器並顯示新問題的按鈕來轉到其他問題。您可以通過單擊「顯示工作」按鈕來查看如何解決問題,該按鈕會在屏幕上顯示一堆信息。我的問題是我有一堆看起來像這樣的方法:在java中將行爲存儲爲數據的最佳方式是什麼?
public void showWorkButtonClicked()
{
if (questionCounter == 1)
showWork1();
else if (questionCounter == 2)
showWork2();
else if (questionCounter == 3)
showWork3();
//for how ever many questions are available
}
很明顯,這些if語句是可怕的設計。我可以將每個函數所需的數據存儲在一個類中,這可能在這種情況下起作用(但可能會讓事情變得混亂),但是如果每個showWork方法都足夠獨特,那麼這會不切實際。我知道如果我使用C#製作應用程序,我可以簡單地將代表放入列表中,並且會有一個優雅的解決方案。如果有人有更好的解決方案(理想情況下使用更少的代碼),我很樂意聽到它。
在Java中查看函子[幫助理解Java中的函數對象或函子](http://stackoverflow.com/questions/7369460/help-with-understanding-a-function-object-or-functor-in- java)以及幻燈片包[函數和命令模式](http://www.buyya.com/254/Patterns/Command-2pp.pdf)的PDF文件。另請參閱https://www.cs.odu.edu/~zeil/cs330/f15zeil/Public/functors/index.html –