Поместить бизнес-логику в Java Beans?

Я читал эту страницу и обнаружил следующее утверждение:

MVC на страницах сервера Java

Теперь, когда у нас есть удобная архитектура для разделения представлений, как мы можем это использовать? Java Server Pages (JSP) становится более интересным, потому что HTML-контент может быть отделен от бизнес-объектов Java. JSP также может использовать Java Beans. Бизнес-логика может быть размещена внутри Java Beans. Если дизайн спроектирован правильно, веб-дизайнер может работать с HTML на сайте JSP, не мешая разработчикам Java.

Интересно, что в своем учебнике я вытащил такую ​​цитату:

В архитектуре MVC ... исходный запрос всегда обрабатывается сервлетом. Сервлет вызывает бизнес-логику и код доступа к данным и создает bean-компоненты для представления результатов (это модель). Затем сервлет решает, какая страница сервера Java подходит для представления этих конкретных результатов, и пересылает запрос там (JSP - это представление). Сервлет решает, какой код бизнес-логики применять и какой JSP должен представлять результаты (сервлет является контроллером).

Эти два утверждения кажутся слегка противоречащими друг другу. Как лучше всего использовать bean-компоненты: следует ли нам размещать в них бизнес-логику или мы должны размещать в них только результаты? Есть ли способы, которыми бобы неадекватны для представления модели?


person Kiril    schedule 22.03.2010    source источник


Ответы (2)


Также довольно часто бизнес-логика помещается в классы с суффиксом Manager. Хотя некоторые люди помещают бизнес-логику в сам bean-компонент объекта данных, я считаю, что лучше всего, когда методы объекта данных выполняют только простые функции, которые не зависят от каких-либо внешних зависимостей. Всю остальную бизнес-логику я помещаю в bean-компонент Manager, который может использовать javabeans с несколькими объектами данных и другие внешние зависимости, чтобы следовать бизнес-логике. Так, например, AccountBean будет содержать поля учетной записи и, возможно, несколько простых методов, которые используют эти поля для вычисления и возврата значения или форматирования поля. Вся бизнес-логика будет в Manager, возможно, в AccountManagerBean.

person Dark Castle    schedule 22.03.2010
comment
Использует ли ваш JSP bean-компонент Manager или он использует только bean-компонент модели? - person Kiril; 22.03.2010
comment
Надеюсь, в вашем представлении что-то стоит за JSP, в Struts и в классе Action, в некоторых местах это класс сервлета, в других фреймворках используются другие вещи. В этом классе Java вы можете использовать Manager для поиска, обновления, добавления, удаления, передавая ваш компонент данных. В JSP лучше всего убрать как можно больше Java, поэтому я буду использовать только javabean данных представления и не допустить Manager. - person Dark Castle; 22.03.2010
comment
Я нахожу все это противоречивым. Поскольку мне кажется, что в большинстве текстов о JavaBeans акцент делается на том, что они являются простыми контейнерами данных, которые почти всегда должны иметь только геттеры и сеттеры, что каким-то образом не согласуется с моим взглядом на то, как должен выглядеть бизнес-объект. Я полностью уважаю ваш ответ! Просто хотел бы внести свой вклад в ваши мысли о том, что JavaBeans имеет эти ограничения с геттерами и сеттерами, а затем добавляет дополнительные методы для добавления логики. Может, я неправильно понял все, что связано с JavaBeans? Я правда не знаю. : -o - person brat; 29.08.2019

Второе утверждение в основном говорит о двух javabeans: одном для бизнес-логики, а другом для модели. Итак, да, бизнес-логику все еще можно разместить в javabeans. Javabean для бизнес-логики может инкапсулировать javabean для модели в качестве своего свойства.

public class User {
    private Long id;
    private String name;
    // ...
}

public class UserManager {
    private User user;
    // ...

    public void login() {
        // ...
    }

    public void logout() {
        // ...
    }
}
person BalusC    schedule 22.03.2010
comment
Знаете ли вы о ситуациях, когда bean-компонент может не подходить для презентации модели? Я не встречал достаточно ситуаций, чтобы иметь хороший пример, но что было бы примером модели, непригодной для beans? - person Kiril; 22.03.2010
comment
Вдобавок: используются ли бизнес-компоненты в JSP так же, как используются модельные компоненты? - person Kiril; 22.03.2010
comment
Я не вижу ситуаций, когда bean-компонент может не подходить для представления модели. И да, вы можете использовать его в JSP точно так же; для доступа к свойствам. Действия должны вызываться контроллером в зависимости от запроса. - person BalusC; 22.03.2010