Общий вопрос о дизайне приложений - PullRequest
0 голосов
/ 27 октября 2010

В процессе разработки веб-приложения у нас есть все на модульном уровне, как у нас есть классы действий, которые отвечают за взаимодействие с компонентом View Business, а также с компонентом Persistence, и каждый компонент хорошо протестирован и работает хорошо.

Мой вопрос - каков наилучший способ интеграции компонента Action с бизнес-компонентом, чтобы мы могли достичь максимальной гибкости и большего уровня абстракции, чтобы любое будущее изменение бизнес-уровня не заставляло использовать какие-либо изменения в Action Компонент.

Также обратите внимание, что мы вообще не используем EJB.

1 Ответ

0 голосов
/ 27 октября 2010

Предполагается, что ваш дизайн выглядит примерно так:

  1. Http-запрос передан компоненту действия.
  2. Компонент действия обращается к бизнес-компоненту.
  3. что-то генерирует компонент View на основе бизнес-компонента.
  4. Http-запрос, переданный из компонента действия для просмотра (возможно, JSP).

Если вы хотите, чтобы компонент действия не зависел от шага 3, а затем заставьте бизнес-компонент сгенерировать компонент просмотра.Вот явский подход:


package some.model.package;
class final ViewObject
{
    private String something;

    public ViewObject(final String something)
    {
        this.something = something;
    }

    private String getSomething()
    {
        return something;
    }
}

interface Business
{
    Object doBusinessStuff(... HttpServletRequest and other stuff...);
}

package some.model.package;
class final BusinessObject
implements Business
{
    ... business stuff ...

    private String determineSomethingValue()
    {
        String returnValue;
        returnValue = ... determine the value of something ...
        return returnValue;
    }

    private Object getViewObject()
    {
        ViewObject returnValue;
        String somethingValue;

        somethingValue = determineSomethingValue();

        returnValue = new ViewObject(somethingValue);

        return returnValue;
    }

    Object doBusinessStuff(... HttpServletRequest and other stuff...)
    {
        ... do stuff based on inputs ...
        return getViewObject();
    }

}

package some.control.package;
class final ActionObject
{
    public somehting processHttpRequest(HttpRequest request, ...other parameters...)
    {
        Business businessObject = ... get the business object from somewhere ...
        Object viewObject;

        viewObject = businessObject.doBusinessStuff();

        request.setAttribute("view object name", viewObject);
    }
}


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