0
我真的被困在這裏。我試圖添加一個新的數據庫,除了當前的。我打算使用工廠模式來選擇正確的數據庫控件,如下所示:重新設計搜索引擎,應用什麼設計模式
private AssetStoresFactory assetStoresFactory;
AssetStore assetStore = assetStoreFactory.getAssetStore(query);
assetStore.search(search);
public AssetStore getAssetStore(String query){
AssetStore assetStore;
if (qualifiesForStoreA(query))
assetStore = new AssetStoreA();
else
assetStore = new AssetStoreB();
return assetStore;
}
AssetStore A
.....
Results search(AssetSearch search) {
AssetSearchOperation o = new AssetSearchOperationA(search);
}
.....
AssetStore B
.....
Results search(AssetSearch search) {
AssetSearchOperation o = new AssetSearchOperationB(search);
}
.....
現在真正的問題在於此。執行搜索目前的方法是這樣的:
_______________________
| BaseSearchOperation |
| ___________________ |
| abstract search() |
-----------------------
ᴧ
|
____________________
| StreamingSupport |
|__________________|
ᴧ
|
______________________
|AssetSearchOperation|
|____________________|
現在有代碼來查詢當前數據庫中的所有上述類別的,這需要刪除和隔離。我無法理解如何做到這一點。請注意,AssetSearchOperation的匿名實現會覆蓋StreamingSupport。 任何幫助表示讚賞!如果您需要更多信息,請不要問!
也許'BaseSearchOperation'應該是數據庫不可知的,並且所有泛型代碼都是用子類來表示的。很難說,代碼真的很神祕,而且你沒有給出很多的上下文。 – guillaume31 2015-04-01 13:57:00