Обработка простого бизнес-процесса в шаблоне MVC? - PullRequest
2 голосов
/ 01 августа 2011

Я использую spring-mvc, и мои контроллеры в основном содержат слишком много логики.Когда 3-5 бизнес-бинов составляют бизнес-процесс, и они вызываются в одном обработчике, тогда включается некоторая проверка, и это приводит к нескольким условиям if-else с положительным или отрицательным ответом.

Одним из возможных решений являетсяиметь фасад, который содержит все ссылки на служебные бины и общий интерфейс их методов.Это делает его более простым, оно также может представлять собой границу исключений в шаблоне MVC, но, тем не менее, бизнес-процесс имеет некоторую логику и проверку и все еще рассматривается в методе обработчика.

Должен ли я создать что-то подобное?:

BusinessProcess {

processOrder() {
   serviceBeanA.call();
   result = serviceBeanB.call();
   validator.validate(result); // throw exception
   serviceBeanC.call(result);
 }
}

и использовать только bean-компонент BusinessProcess в моих обработчиках?Ловля исключений или возвращаемого значения скажет, что не так и что нужно включить в ответ.В противном случае содержимое метода processOrder будет в обработчике.

Это правильный путь?Как называется этот шаблон, если так.

1 Ответ

0 голосов
/ 02 августа 2011

Скорее всего, вы должны поступить так, как вы предлагаете, если я правильно понял. Я не думаю, что есть название для этого "образца", и не должно быть. Поскольку вы кажетесь неуверенными, вот почему я думаю, что вы думаете о правильной вещи.

Обработка заказов - это логическая абстракция, которой интересуется ваш обработчик. То, как на самом деле OrderProcessorBean (или BusinessProcessImpl) выполняет это, является деталью реализации и скрыта от обработчика / контроллера.

Не имея такого bean-компонента, вы можете написать метод processOrder в некотором контроллере, и у контроллера есть зависимости и ссылки на служебные bean-компоненты, имеющие дело с деталями заказов на обработку. Как вы заметили, это не очень хороший дизайн.

Также кажется правильным, что код обработки позволяет исключениям вылетать и не беспокоится о том, как они обрабатываются вызывающей стороной. Возможно, транзакция откатывается и, возможно, некоторый HTML-файл с сообщениями об ошибках обслуживается конечному пользователю, но код (бизнес-логика), отвечающий за обработку заказов, не должен знать, что существуют такие вещи, как Spring MVC или HTML.

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