Пружинный контроллер и дизайн сервисов - PullRequest
0 голосов
/ 02 февраля 2012

У меня есть задания разных типов, хранящиеся в БД.Мне нужно получить задачи из БД и запустить каждую задачу в соответствующем сервисе (например, AService обрабатывает объекты ATask, BService обрабатывает объекты BTask и т. Д.).Существует также класс TaskController, который координирует выполнение задач.

Что является лучшим дизайном -

1. 1. Контроллер извлекает все активные задачи и отправляет каждую задачу в соответствующую службу.

2.Выберите каждую службу и выполните все задачи, которые имеют к ней отношение (в этом случае контроллер должен будет зациклить все определенные службы и активировать их).

1 Ответ

1 голос
/ 02 февраля 2012

Я бы пошел к решению 1. за исключением того, что должна быть создана промежуточная служба для обработки того, что вы хотите поместить в контроллер - задачи загрузки и диспетчеризации.

Также я чувствую запах большого жира switchили каскад if с, может быть с instanceof.Я предполагаю, что вы можете воспользоваться схемой ответственности - спросите первую службу, может ли она справиться с задачей.Если он не может - перейти ко второму и т. Д.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...