Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java EE (J2EE) и Spring > Организация business layer в Struts


Автор: oson 8.6.2008, 22:14
Господа!
Посоветуйте плиз как правильно организовать business layer приложение где используется Struts
То есть как делается обычно. Есть некий MyAction, у которого при нажатии кнопки на форме страницы
вызывается метод например createResult, в котором достаются некоторые значения, введенные в форму на предыдущих и на текущем этапах , и вычисляется некий result
Код

    public ActionForward createResult(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception
{
  MyForm1 myForm1 = (MyForm1)request.getSession().getAttribute("myForm1");
  MyForm2 myForm2 = (MyForm1)request.getSession().getAttribute("myForm2");
  Long value1 = myForm1.getValue1();
  Long value2 = myForm2.getValue2();
  Long result = value1 + value2;
  return   return mapping.findForward("nextPage");
}



Но на самом деле все вычисления 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 smile, в котором и будет осуществляться вся бизнес логика.
  При таком подходе во-первых не надо все Form в сессию класть,
и тем более переменные другие.А во вторых этот BusinessLogicContainer будет все знать про бизнес логику, то есть будет содержать все необходимые методы для нее, и знать про текущее состояние залогинившегося юзера. И тогда в самом  MyAction я буду доставать из MyForm значения Value и делать вызовы нужных методов в том BusinessLogicContainer, который уже и будет делать вызовы к базе, менять состояние юзера и запоминать его. Как такой подход?
 Поделитесь пожалуйста опытом и если можно с примерами и ссылками.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)