Командный образец вместе с Цепью ответственности
В моем приложении мне нужно загружать данные из БД в определенной последовательности шагов, например загружать всех клиентов, затем загружать все заказы, загружать продукты и т. Д. Однако в одном или двух случаях порядок отличается и также необходимо загрузить Дополнительная информация.
abstract Model
{
public void load(Configuration config) {
loadCustomers(config);
loadOrders(config);
loadProducts(config);
}
}
ConcereteModel1 extends Model {
doesn't overload load
}
ConcreteModel2 extends Model {
public void load(Configuration config) {
loadProducts(config);
loadOrders(config);
loadCustomers(config);
loadAdditional(config);
}
}
Сначала я подумал, могу ли я использовать шаблон команд (с методом команд загрузки) для фактической загрузки клиентов, заказов или продуктов и использовать цепочку ответственности, чтобы связать команды. Это хороший подход, или я над инженерными вещами здесь?
Любой пример кода будет очень полезным. Спасибо за любые предложения
2 ответа
Звучит как правильный выбор для вашей задачи. В качестве альтернативы вам нужно создать базовый класс для ваших шагов загрузки данных и по-разному реализовать его для особых случаев.
Все зависит от того, какой самый простой способ определить, что у вас есть особый случай.
Смотрите это описание цепочки ответственности для примера кода.
Я думаю, что вы должны обратить внимание:
Вы используете технический способ (например, шаблон Command), чтобы скрыть спецификацию домена ("... Однако в одном или двух случаях...").
Предлагаю разработать решение, которое возникнет вторым.