Наилучший опыт struts2 - куда мне поместить вспомогательные методы?Статические классы в порядке? - PullRequest
2 голосов
/ 04 августа 2011

У меня есть некоторый повторяющийся код, который используется некоторыми из моих действий в Struts 2.

Нет необходимости говорить, что я хочу, чтобы этот код существовал только в одном месте, поэтому я соберу его вметод и положить его ... где?

Какова лучшая практика?Создать ли вспомогательный класс для каждого типа вспомогательного метода?Один большой вспомогательный метод?Один большой статический класс?Несколько статических классов?

Я использую MVC.

Я прочитал другие ответы на stackoverflow, и ни один из них, похоже, не вполне отвечает на мой вопрос.

Большое спасибо за вашу помощь.

РЕДАКТИРОВАТЬ обновление с примерами по запросу:

Например:

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

Кроме того, у меня есть компонент представления, который включен в несколько страниц JSP и должен быть загружен некоторыми данными из модели.Мне нужно было бы копировать / вставлять код в каждое действие (очевидно, хочу этого избежать).

Надеюсь, это прояснится.Пожалуйста, дайте мне знать, если это не так.

Ответы [ 2 ]

2 голосов
/ 04 августа 2011

Мое общее правило заключается в том, что если методы являются вычислительными, другими словами, если они просто выполняют функцию (например, математическую), я создам класс со статическими методами и буду использовать его повсеместно.

У меня есть пакет утилит, который я включаю во многие мои проекты, например, в качестве jar-файла с функциями работы со строками и проверки, потому что они редко меняются.

Проверка строки является хорошим примером. У меня есть класс Validation, который я часто использую, чтобы проверить наличие нулевых или пустых строк и вернуть логическое значение. Я просто называю это из моих классов действий, таких как:

if(Validation.string(value)){
      // do magic - huzzah
}

Я пытаюсь сгруппировать служебные методы в классы, особенно если я использую их повсеместно. Это избавляет меня от повторного набора текста, поиска в классах полезной идеи, которую я когда-либо имел, и предоставляет один экземпляр кода на случай, если мне нужно обновить, изменить, перегрузить или переопределить.

1 голос
/ 05 августа 2011

Для компонентов представления, включенных в несколько страниц JSP, и объектов, сохраненных в сеансе, я создал базовый класс действий и классы вспомогательных действий, чтобы избежать повторяющегося кода.

public class BaseAction extends ActionSupport implements SessionAware {
    protected Map session;
    protected ResourceBundle rb;
    // common getters for shared view components and common setters
    ...
}

-

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