2009-08-26 2 views
2

... и как лучше всего обрабатывать обратную связь с успехом/неудачей на уровне представления.Бизнес-логика для нескольких объектов значений - где поставить петлю?

Варианты:

doBusinessLogic(things) 

или

for (Thing thing : things) { 
    doBusinessLogic(thing) 
} 

Предполагая, что мы хотим просмотра слой, который получает обратную связь успеха/ошибки последовательным образом (т.е. с одной или нескольких операций на объектах стоимостью) , каков наилучший подход?

Разъяснение:

Обработка несколько типов исключений выбрасываются из бизнеса-логика вызова в виде слое кода тяжелого, а также вызывают проблемы с обслуживанием (новые исключения введены которых уровень представления об этом не знает). Кажется, лучше, если бизнес-логика вызовет обработку ошибок на нескольких объектах ценности и «упакует» их для представления, чтобы иметь дело последовательно.

ответ

1

Как о чем-то вдоль линий вашего последнего предложения:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() } 

Идея заключается в том, чтобы поставить бизнес-логику в методе бизнес-объекта. Ваш уровень просмотра может пересекать все бизнес-объекты, сообщая каждому из них о своей деятельности. Как каждый свой бизнес находится в логике бизнес-объекта в бизнес-слое. Вы можете обрабатывать ошибки и т. Д., Возвращая значения из метода doBusinessLogic или бросая исключения для неприятных вхождений.

Если вы выполняете логику межсайтового бизнес-объекта (то есть логику, которая работает на более чем одном бизнес-объекте), возможно, вы можете создать класс businessObjectManager, который может иметь методы, которые принимают один или несколько бизнес-объектов и управляет на них. Таким образом, помещая объект менеджера в бизнес-уровень, вы все равно сохраняете всю свою бизнес-логику на бизнес-уровне.

+0

Мне очень нравится идея менеджера - она ​​может быть реализована как стратегия борьбы с дозированием и т. Д. В конечном счете я не думаю, что есть лучшее решение - именно то, что лучше всего работает в данной ситуации. – ireddick

0

В конечном итоге я отправился на прежний вариант и создал легкий общий набор «result bundle», который инкапсулирует успехи и неудачи действия в коллекции объектов. Успешность или неудача привязаны к соответствующему идентификатору объекта.

Аппликатор, заполненный каждым вызовом бизнес-логики и возвращенный к слою представления. Исключения, вызванные циклом бизнес-логики «выполнить действие по объекту», пойманы, и соответствующий сбой добавлен к набору результатов (привязанный к идентификатору объекта).

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

Это работает очень хорошо.

Я думаю, что подход, который вы принимаете с этим, подходит для вашей системы.

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