在我们的项目,我们有一个类KnowledgeBaseManager,其中被使用的其他类如下:使用依赖注入还是有简单的解决方案?
KnowledgeBaseManager manager = KnowledgeBaseManager.get();
manager.foo();
KnowledgeBaseManager拥有一个静态变量standardKnowledgeBaseManager用于第一次时被初始化:
class KnowledgeBaseManager {
private static KnowledgeBaseManager standardKnowledgeBaseManager = null;
public static KnowledgeBaseManager get() {
if (standardKnowledgeBaseManager == null) {
standardKnowledgeBaseManager = new KnowledgeBaseManager();
// initialize standardKnowledgeBaseManager with appropriate knowledge base
}
return standardKnowledgeBase;
}
此外,我们有一个参数化的构造
public static KnowledgeBaseManager get(OntModel model) {...}
我们使用到现在为止仅用于单元测试,我们需要一个带有测试知识库的KnowledgeBaseManager。
现在,我们有以下挑战:为了发展,我们希望该应用程序使用KB-经理在后台另一个知识基础(因为速度)。更具体地说,我们用Wicket构建一个Web应用程序。因此,我们希望在应用程序,其中的知识基础和KnowledgeBaseManager在应用程序中使用(根据wheter我们在开发或部署)开始申报地方。使用KB管理器的代码(如
KnowledgeBaseManager manager = KnowledgeBaseManager.get();
现在)不应该为此而改变。
的问题是:什么是对,最好的架构?
我在考虑使用像PicoContainer或Guice这样的依赖注入框架,但没有任何经验,我不确定这是否会成为特定问题的开销。有关我们案例最佳实践的任何建议?