Я действительно застрял здесь. Я пытаюсь добавить новую базу данных в дополнение к текущей. Я собираюсь использовать шаблон фабрики, чтобы выбрать правильный контроль базы данных, как это:Редизайн поисковой системы, какие шаблоны дизайна применяются
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