是否使用单一绑定将整个地图存储在Guice中?

时间:2017-06-19 23:06:15

标签: java dependency-injection guice

我需要存储Map<Integer, User>才能按ID查找用户。在使用Guice之前,我会创建一个UserManager来组合地图本身,并有2个函数来获取和设置用户。

为了避免需要一个单独的(可能是poltergeist)包装类,创建一个像UserMap extends HashMap<Integer, User>这样的类并将其绑定到单例实例上被认为是不好的做法吗?然后,我可以只注入UserMap本身,而无需担心任何其他问题。这可能违反了继承的构成......但考虑到它的唯一目的是作为地图吗?

是否还有其他合适的方法可以存储Map(和其他)类型,以便在没有静态变量的情况下进行全局访问(即没有静态非Guice UserManager.get(23))?

我觉得我正在创建的几十个“管理器”类没用,只是为预先存在的函数提供一个包装器。

1 个答案:

答案 0 :(得分:2)

我想说,扩展HashMap而不是自己的界面会违反最佳做法。

以下是一些原因

  • 如果您以后想要从数据库中通过id获取用户,则需要重写所有触及此Map的代码
  • 使测试更容易
  • 简单概述允许的操作

最好有一个明确的界面来定义UserManager的职责,随着你的应用程序的进展,这可能会变得更加复杂。