| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java EE (J2EE) и Spring > Организация business layer в Struts |
| Автор: oson 8.6.2008, 22:14 | ||
| Господа! Посоветуйте плиз как правильно организовать business layer приложение где используется Struts То есть как делается обычно. Есть некий MyAction, у которого при нажатии кнопки на форме страницы вызывается метод например createResult, в котором достаются некоторые значения, введенные в форму на предыдущих и на текущем этапах , и вычисляется некий result
Но на самом деле все вычисления Long value1 = myForm1.getValue1(); Long value2 = myForm2.getValue2(); Long result = value1 + value2; должны быть вынесены в бизнес лайер, так как Action в соостветсвие с MVC моделью - это только Controller.Кроме того эта бизнес логика должна вызываться из разных Actions. А так приходится копировать из одного Action код в другой. Поделитесь опытом, как организовать business layer? Что должно быть на входе - myForm1, myForm2? Но тогда получается привязка к конкретным Form которые тоже являются частью контроллера. Бизнес лайер по идее про них ничего не должен знать. Или же передавать туда просто Long value1, Long value2 и получать Long value3? Но тогда это будет просто Helper который вычисляет конретное значение и про общую бизнес логику ничего не знает :( У меня есть одна идея, но я не знаю, насколько она правильная. Примерно так -когда логинится юзер, создавать с сессии некий обьект BusinessLogicContainer При таком подходе во-первых не надо все Form в сессию класть, и тем более переменные другие.А во вторых этот BusinessLogicContainer будет все знать про бизнес логику, то есть будет содержать все необходимые методы для нее, и знать про текущее состояние залогинившегося юзера. И тогда в самом MyAction я буду доставать из MyForm значения Value и делать вызовы нужных методов в том BusinessLogicContainer, который уже и будет делать вызовы к базе, менять состояние юзера и запоминать его. Как такой подход? Поделитесь пожалуйста опытом и если можно с примерами и ссылками. |