【问题标题】:Adding user class to all presenters向所有演示者添加用户类
【发布时间】:2011-03-09 16:34:10
【问题描述】:

我对 GIN 有一个模糊的了解,但它适用于注入演示者等。

我正在尝试将自制的“用户”类注入所有演示者,以获取当前登录的用户。

我已经在我的 User 类的构造函数中添加了 @Inject,并将 User 添加到我的 GIN 模块中......但除此之外,我完全迷失了。我是否将它绑定到我的应用演示者(尝试过,但由于用户没有扩展我的 AppPresenter,我得到一个错误)?作为单身人士?这甚至是传递这些数据的正确方法吗?

我讨厌在此处发布此内容(不是在寻找免费的家庭作业),但我在其他任何地方都找不到合适的教程/示例。

非常感谢。

【问题讨论】:

  • 问题行不需要加标签。

标签: gwt dependency-injection gwt-gin


【解决方案1】:

我看到了两种可能性:

  • 注入源为@Provides 方法或Provider。但是,问题是如何将当前登录的用户传递给这些方法,因为全局状态是禁止的。一个可能的解决方案是通过事件总线传递它,但在这一点上,它似乎有点破坏了 DI 的全部意义(注入当前登录的用户是恕我直言,而不是 DI 的角色)。
  • 通过事件总线绕过用户。创建一个在用户登录/更改时触发的自定义事件,并且一些演示者会监听该事件(毕竟,并非所有演示者都必须知道当前用户)。

我更喜欢并使用第二种方法 - 虽然 DI 很棒,但以您描述的方式使用它对我来说似乎有点 hackish。我强烈建议查看Guice documentation - Gin 基本上是 Guice 包装得很好,可以与 GWT 一起使用,所以核心是相同的。对于如何有效地使用 DI 以及通常如何编写可测试代码的其他一些建议,我强烈推荐 Misko Hevery's blog 和他在那里提出的 guide to writing testable code(由 Google 内部使用)。

【讨论】:

    猜你喜欢
    • 2020-01-28
    • 1970-01-01
    • 2011-09-11
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多