У меня есть случай, когда у меня есть несколько источников данных резервного копирования. Под источником данных я подразумеваю абстракцию, например. Файл, БД NoSql / SQL, таблицы различий, архивы. У меня есть конкретная иерархия для доступа к данным, и я могу отбросить данные любого источника данных на основе определенных критериев. Теперь мой вопрос: есть ли какой-либо существующий шаблон проектирования для реализации этого? В настоящее время я подумал о двух подходах, но думаю, что их можно улучшить:
for (long id : ptitleIds) {
if(checkIfInValid(id)) {
continue;
}else if (getFromNdi(result, id)) {
continue;
} else if (getFromCimg(result,id)) {
continue;
} else if (getFromPtitle(result,id)) {
continue;
} else {
result.put(id, EMPTY_OBJECT);
}
}
return result;
Другой подход, который я пробовал, короче, но, возможно, его нелегко понять:
for (long id : ptitleIds) {
if(checkIfInValid(id) || getFromNdi(result, id) || getFromCimg(result,id)) || getFromPtitle(result,id)) {
continue;
} else {
result.put(id, EMPTY_OBJECT);
}
}
return result;
В этом случае источники данных представляют собой простые функции, вставляющие и возвращающие истину, если данные действительны.