Командный образец вместе с Цепью ответственности

В моем приложении мне нужно загружать данные из БД в определенной последовательности шагов, например загружать всех клиентов, затем загружать все заказы, загружать продукты и т. Д. Однако в одном или двух случаях порядок отличается и также необходимо загрузить Дополнительная информация.

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), чтобы скрыть спецификацию домена ("... Однако в одном или двух случаях...").

Предлагаю разработать решение, которое возникнет вторым.

Другие вопросы по тегам