在我們的項目,我們有一個類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這樣的依賴注入框架,但沒有任何經驗,我不確定這是否會成爲特定問題的開銷。有關我們案例最佳實踐的任何建議?