【发布时间】:2014-09-17 11:05:02
【问题描述】:
考虑如下的工厂:
public interface SomeFactory {
public SomeValue createSomething(SomeKey key);
}
此外,我们得到了 SomeFactory 的一些实现:
public class SomeFactoryImpl implements SomeFactory {
@Override
public SomeValue createSomething(Key key) {
// some logic
}
}
让我们考虑一个想要使用这个工厂的类:
public class SomeClass{
@Inject
private SomeFactory someFactory;
public String someMethod(Key someKey) {
someFactory.createSomething(someKey);
// some more logic
}
}
在这种情况下使用工厂接口有什么好处?我想到了以下几点:
假设我想为我的工厂使用另一个实现:
public class AnotherFactoryImpl implements SomeFactory {
@Override
public SomeValue createSomething(Key key) {
// some logic
}
}
然后哪个工厂将与@Inject-annotation 一起使用?注入实现本身会更合适,还是我们总是只有一个实现工厂?另一个可能的答案:工厂使用接口不合适吗?
【问题讨论】:
标签: java interface factory inject