我只是修改与周围 谷歌题之一,因 对于依赖注射,并开始把它变成我的现有应用程序。到目前为止,一切都很好.我有很多类的这一需要,旁边他们的依赖性、串、数据源,等等。我知道有NamedBindings,但是我真的不想创建一个注释每个简单的字符串我已经通过的构造对每一类。然后,有一种东西叫AssistedInject,创造工厂implementions我。哇,但我仍然必须界定该接口的工厂。这就是好的,为这类做具有依赖性,但是关于这个例子类:

public class FooBarClass {
    public FooBarClass(String name, String anotherOne) {
        // Some stuff
    }
}

有一些情况下,我怀疑如何使用题之一,因或者更一般地说,二的正确方法。"我常常听到:XYZ框架是新的 新的." 但是,这种隐含的,我已经创建 实例迪框架。

仅一个实例是必需的

什么如果我只需要一个此类的实例?这类具有绝对没有任何依赖旁边的两个串。想一想一个关闭的挂钩,将instanciated只有一次并传递给JVM为我关机钩。我应该建立这个实例题之一,因?这看起来很愚蠢到我,因为没有什么可以注射的,但是我必须要写一个工厂的接口传递的指导参数和需要创建一个接口,为我FooBarClass使用。

多个实例,是必需的

同样的道理也适用于一种情况,我需要多个实例,这一类。没有依赖性,但我必须创造一大堆的样板代码什么也得不到它。这似乎是错误的给我。

因此,如何我是应该用二和/或题之一,因?

非常感谢!

有帮助吗?

解决方案

它可能有助于分裂 依赖关系数据.

  • 依赖常常服务:数据库、钟,并RPC根。加上所有的应用程序的代码分层在这些: UserAuthenticator, PaymentHandler, , EmailGateway.
  • 数据就是这样:一个 Date, , Map<String,InetAddress> 甚至一个 Customer.这些都是简单的,在存域的对象。

DI自然是最适合于依赖方面的事情。你应该继续使用 new 你的数据模型的课程。

其他提示

如果您正在创建多个实例,如个人客户,它没有任何意义它们注入。什么有意义是创建可@Singleton范围可以与它的所有依赖性创建客户实例一个CustomerFactory。

测试特定类时注入的依赖性,如果你想忽略(分离物)的复杂性。如果类只是一个数据夹,它的代码是微不足道的(获取,设置,等于)。测试目标类的时候,所以注射数据实例您不必嘲笑它是矫枉过正的(通常是硬盘)。如果代码是不平凡的,类是比数据保持器更大,并且应该注入和模拟它在单元测试。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top