说我有这个:
interface Something {
}
interface Fetcher {
}
class FetcherImpl implements Fetcher {
private final Class<?> klass;
public FetcherImpl(Class<?> klass) {
this.klass = klass;
}
public Something fetch() {
// Fetch an instance Something depending on the klass
}
}
class ClassA {
private final Fetcher fetcher;
public ClassA(Fetcher fetcher) {
this.fetcher = fetcher;
}
public void someMethod() {
// ...
Something something = fetcher.fetch();
// ...
}
}
class ClassB {
private final Fetcher fetcher;
public ClassB(Fetcher fetcher) {
this.fetcher = fetcher;
}
public void someMethod() {
// ...
Something something = fetcher.fetch();
// ...
}
}
所以,这个想法是:
Something
Fetcher
,它根据类取出它。例如,它根据路径/tmp/<class-name>.txt
ClassA
和ClassB
一些要点:
ClassC
使用其自己的类似于ClassA
和ClassB
的获取器实例时,不应该为该特定类添加额外的Spring配置类似模式的一些现实世界的例子:
记录器,例如而不是使用
final Logger logger = LoggerFactory.getLogger(this.getClass())
记录器将通过构造函数
这可能使用Spring吗?如果是这样,你能提供一些我可以阅读的指示或类似的例子吗?如果重要的话,我正在使用Spring的Java配置。