【问题标题】:Play Framework static methods everywhere到处玩框架静态方法
【发布时间】:2012-11-21 02:12:16
【问题描述】:

所以我刚开始研究 Play 框架,我在示例 (http://www.playframework.org/documentation/2.0.4/JavaTodoList) 中看到一切似乎都是静态的。我是其中之一,尽管我认为静态并不是一件好事,如果您需要静态,您可能应该使用单例。更熟悉 play 框架的人可以告诉我围绕所有这些静态调用的思考过程是什么,而不是更符合单例模式的东西?我知道我可以在初始静态方法调用之后实现我想要的任何模式,但在我看来,这里可以做其他事情来限制静态方法的使用。我今天第一次看游戏框架,所以我可能遗漏了一些东西,所以请随时启发我。谢谢。

【问题讨论】:

标签: playframework


【解决方案1】:

Play 的方法是无状态的,而非静态方法将状态引入类。

单例模式在这里也不起作用。使用单例,您就拥有一个类的一个全局实例。这可能有 4 种可能的结果,具体取决于您的定义(可能更多,但我想不出任何结果):

  • 如果您的 Singleton 实例是 stateful 并且 global 表示 application-wide,那么同一页面的多个访问者将共享相同的状态 ( “哦,看,我现在是用户 X。这很奇怪。”)
  • 如果您的 Singleton 实例是有状态并且 global 表示每个 HTTP 请求,那么您只需创建一个新的“Singleton”并且不要重复使用它,使单例模式(在我看来)变得无用。
  • 如果您的 Singleton 实例是无状态,那么为什么还要费心生成它的实例并设法拥有一个呢?

第四点是有状态单例,其中全局表示每个用户。事实上,这确实导致了一种管理用户会话的简洁方式。但这不是 Play 的做法。

【讨论】:

  • 我不确定我是否同意您所做的无状态单身声明。我完全同意使用无状态方法,但我认为任何时候开发人员想要全局使用一个对象(无论全局范围如何),该对象都不应该保持任何状态。显然这不是一个硬性规定,更像是一个指导方针。
猜你喜欢
  • 2015-05-25
  • 2018-10-29
  • 2012-08-17
  • 1970-01-01
  • 2018-12-01
  • 2014-04-23
  • 1970-01-01
  • 1970-01-01
  • 2022-12-30
相关资源
最近更新 更多