3

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

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

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

我讨厌在这里发布这个(不是在寻找免费的家庭作业),但我在其他任何地方都找不到像样的教程/示例。

非常感谢提前。

4

1 回答 1

2

我看到两种可能性:

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

我更喜欢并使用第二种方法——虽然 DI 很棒,但以你描述的方式使用它对我来说似乎有点 hackish。我强烈建议查看Guice 文档- Gin 基本上是 Guice 很好地包装以与 GWT 一起使用,所以核心是相同的。对于如何有效地使用 DI 以及通常如何编写可测试代码的其他一些建议,我强烈推荐Misko Hevery 的博客和他在那里发布的编写可测试代码的指南(由 Google 内部使用)。

于 2010-06-29T17:09:57.327 回答