2012-12-03 49 views
1

所以我剛開始看看Play框架,我發現在示例中(http://www.playframework.org/documentation/2.0.4/JavaTodoList),似乎所有東西都是靜態的。我是那些人之一,但相信靜態不是一件好事,如果你需要靜態,你應該使用單身。有人能更熟悉這個遊戲框架嗎?請告訴我們這些靜態調用的思路是什麼,而不是更符合單例模式的東西?我明白我可以在初始靜態方法調用之後實現任何我想要的模式,但在我看來,在這裏可以做其他事情來限制靜態方法的使用。我今天再次看到了這個遊戲框架,所以我可能會錯過一些東西,所以請隨時給我啓發。謝謝。播放框架靜態方法無處不在

+0

重複的問題,並通過Guillaume博爾特回答http://stackoverflow.com/questions/5192904/play-framework-uses-a-lot-of-statics – Schleichardt

回答

3

Play的方法是無狀態的,而非靜態方法將狀態引入類。

Singleton模式在那裏也沒有真正的工作。用一個單例,你完全有一個全局的一個類的實例。這可以有4個可能的結果,這取決於您的定義(也許更多,但我想不出任何):

  • 如果您的Singleton實例是狀態全球意味着應用範圍,那麼多在同一個頁面的訪問者將共享相同的狀態(「哦,你看,我是用戶X了。這是奇怪的。」)
  • 如果您的Singleton實例是狀態全球意味着每個HTTP請求,然後喲你只是做一個新的「單身人士」,不要重用它,渲染Singleton模式(在我看來)是無用的。
  • 如果你的單例實例是無狀態,那麼爲什麼還要生成它的一個實例,並設法準確地擁有一個?

第四點會是一個狀態的Singleton,其中全球意味着每個用戶。這實際上導致管理用戶會話的整潔方式。但它不是Play的方式。

+0

我不知道我同意你做的無狀態單身聲明。我完全同意利用無狀態方法,但我會爭辯說,無論何時,開發人員希望全局使用對象(不管全局範圍),該對象都不應該保持任何狀態。顯然這不是一條硬性規定,更像是一條指引線。 – peekay