所以我刚开始研究 Play Framework,我在示例 (http://www.playframework.org/documentation/2.0.4/JavaTodoList) 中看到一切似乎都是静态的。我是其中之一,尽管我认为静态并不是一件好事,如果您需要静态,您可能应该使用单例。更熟悉游戏框架的人能否告诉我围绕所有这些静态调用的思考过程与更符合单例模式的东西是什么?我知道我可以在初始静态方法调用之后实现我想要的任何模式,但在我看来,这里可以做其他事情来限制静态方法的使用。我今天第一次看游戏框架,所以我可能会遗漏一些东西,所以请随时启发我。谢谢。
问问题
941 次
1 回答
3
Play 的方法是无状态的,而非静态方法将状态引入类。
单例模式也不是真的在那里工作。使用 Singleton,您只有一个类的全局实例。这可能有 4 种可能的结果,具体取决于您的定义(可能更多,但我想不出任何结果):
- 如果您的 Singleton 实例是有状态的并且全局意味着application-wide,那么同一页面的多个访问者将共享相同的状态(“哦,看,我现在是用户 X。这很奇怪。”)
- 如果您的 Singleton 实例是有状态的并且每个 HTTP 请求都是全局的,那么您只需创建一个新的“Singleton”并且不要重用它,从而使 Singleton 模式(在我看来)无用。
- 如果您的 Singleton 实例是无状态的,那么为什么还要费心生成它的实例并设法拥有一个呢?
第四点是有状态的Singleton,其中global意味着per user。事实上,这确实导致了一种管理用户会话的简洁方式。但这并不是 Play 的做法。
于 2012-12-03T15:40:58.223 回答