2016-12-15 5 views
1

Мы реорганизовали Java-приложение, в котором код был пропущен на всем протяжении и не соответствовал даже самым элементарным принципам или шаблонам. Нам удалось извлечь следующие слои:Использование делегирования для разделения слоев

  • слой данных
  • вместилища слоя с командными и запросами хранилищ для каждого вида дб объекта
  • сервис слой, который работает только с хранилищами и может иметь дело логика
  • уровень обслуживания, который выполняет сервисную композицию для реализации бизнеса приложения (не работает с репозиториями)
  • API и уровень контроллера для отображения представлений, которые должны работать o олько с оркестровки услуг

Есть несколько ситуаций, когда контроллер или API нужно вызвать метод из службы (сервисный уровень), но, учитывая наше желание иметь контроллеры работают только с оркестровки услуг мы вынуждены создайте службу оркестровки, которая ничего не делает, кроме как делегирует вызов метода фактической службе.

Правильно ли это, или мы должны удалить среднего человека (оркестровку), когда он ничего не делает, кроме делегирования?

С уважением, Cristian.

ответ

3

Если бы это был мой код, я бы предпочел следовать стандарту - даже если слой оркестровки иногда просто передает прямо на сервисный уровень. В случае изменения бизнес-процесса это изменение, мы надеемся, будет изолировано от уровня оркестровки, оставив код вызова незатронутым изменением. Кроме того, если вы пытаетесь обеспечить соблюдение стандартов вокруг структуры кода, будьте последовательны в этом, чтобы плохая практика снова не ползла. Если вы иногда вызываете сервисный уровень напрямую, а в другое время - через уровень оркестровки, это может привести к путанице среди разработчиков с точки зрения того, какой подход использовать, когда.

Наконец, просмотрите детализированные операции - действительно ли определенные вызовы методов действительно существуют в полной изоляции или они являются частью более крупного бизнес-процесса? Я согласен с вашей схемой расслоения - ваш уровень представления должен знать, как вызывать бизнес-процесс (отображается с помощью уровня оркестровки), но он должен быть не осведомлен о деталях, связанных с выполнением этого процесса (отображается уровнем обслуживания). Даже если бизнес-процесс состоит всего из одного шага, это все еще бизнес-процесс, который может быть раскрыт уровнем оркестровки - это просто очень простой процесс.

Смежные вопросы