这个例子取自一本关于Dependency Injection的书。
在第 87 页,有这个例子。
public class NewsletterManager {
private final List<Recipient> recipients;
private final DelivererFactory factory; // The book notes this as injected
public NewsletterManager(List<Recipient> rs, DelivererFactory factory) {
this.recipients = rs;
this.factory = factory;
}
public void send(Newsletter letter) {
for (Recipient recipient : recipients) {
Deliverer d = factory.forLetter(letter);
d.deliverTo(recipient);
}
}
}
我了解代码的用途,但我不了解的是如何实例化或配置 my Module
,以便我可以创建此类的实例。
似乎DelivererFactory
被注入了。示例没有说明如何,但让我们承认它是通过构造函数注入。在那种情况下,如何传递List<Recipient>
特定于NewsletterManager
我想要的实例的实例?如何使用 Guice 来实例化我NewsletterManager
的模块配置DelivererFactory
和特定List<Recipient>
实例?
我不明白的是如何在构造函数的签名中同时自动注入对象和特定于实例的对象。在这种情况下,我不知道如何获得NewsletterManager
只有我的List<Recipient>
. 我必须依赖工厂吗?那样的话,DelivererFactory
打针有什么用,我厂里也得打针……
我希望我的问题足够清楚......