Как я могу повторно использовать код, когда два разных приложения калитки имеют общую функциональность - PullRequest
1 голос
/ 06 июля 2011

У меня есть приложение Wicket AuthenticatedWebApplication, которое имеет несколько страниц и функций, которые необходимо повторно использовать в новом приложении AuthenticatedWebApplication, которое мне нужно разработать.

Я использую Wicket 1.4, Spring и Hibernate.

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

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

Что я могу сделать, чтобы мои приложения были модульными и достигали моей цели?

Ответы [ 4 ]

1 голос
/ 07 июля 2011

Судя по вашим другим комментариям и ответам:

  1. Выполните рефакторинг вашего приложения и перенесите весь общий код в (абстрактные) базовые классы.
  2. Переместите их в новый проект и задайте для BuildPath 2 новых проектов-приложений требуемый базовый пакет.
  3. Расширьте свои базовые классы, чтобы реализовать изменяющуюся функциональность.

В зависимости от текущей реализации, вы можете изменить свой логотип, внедрив два разных источника изображений или предоставив разные модели из ваших новых проектов на вашу базовую страницу, или вы можете поместить URL-адрес изображения в ваши свойства и предоставить разные файлы свойств в ваших приложениях. То же самое справедливо для баз данных или таблиц ... Например, с JPA вы помещаете все глобальные используемые сущности в свою базу и реализуете две разные сущности пользователя, используя разные имена таблиц. Вы могли бы даже использовать общий абстрактный объект baseUser для уменьшения дублирования кода.

1 голос
/ 07 июля 2011

Моя компания делает это постоянно. У нас есть базовый пакет, который содержит базовые приложения пользователя, учетные записи пользователей, логин, аутентификацию и т. Д. Затем каждый разрабатываемый нами проект расширяет этот базовый пакет. Есть некоторое дублирование - например, почти все файлы конфигурации выглядят одинаково в каждом - но у каждого есть свой собственный каталог theme, который содержит разметку, настроенную под внешний вид приложения.

Некоторые предложения, как вы делаете это:

  1. Базовое приложение должно иметь достаточное количество getXPanel() методов, которые переопределяет каждое подприложение. Например, getHeaderPanel()
  2. Используйте класс «BasePage», который все расширяют. Именно здесь вы настраиваете свой внешний вид, переопределяете в папках тем под-приложения и интенсивно используете функции <wicket:extend>. Также хорошее место для размещения вашего импорта jQuery, ec.
  3. Имейте в виду, что разметка легко переопределяется. Ваше под-приложение не должно создавать java-расширения страниц для изменения логотипов. Просто используйте другую разметку.

Каждое из наших приложений разделено как минимум на 4 модуля. Например:

  1. base - Зависимость калитки, ведение журнала основных событий
  2. data - UserApplication, AdminPage, пользовательский спящий режим, объект. Каждая страница имеет свою разметку, но обычно переопределяется.
  3. science - основной проект с большим количеством кода для отображения учебника по науке. ScienceApplication extends UserAppication.
  4. основы - Реализация конкретной темы для учащихся начальной школы FoundationsApplication extends ScienceApplication
  5. запрос - Реализация конкретной темы для старшеклассников InquiryApplication extends ScienceApplication

Наши два научных приложения имеют разные заголовки и даже несколько разных страниц, но ScienceApplication имеет те методы, которые я описал выше.

1 голос
/ 06 июля 2011

Это основной момент основанных на компонентах фреймворков.Поместите общий код (компоненты, поведение, базовые классы как сеанс, приложение, ...) в отдельный проект Java (.jar).Позже зависит от этого проекта в конкретных проектах .war (поместите .jar в WEB-INF / lib).Voila!

0 голосов
/ 06 июля 2011

От твоего вопроса, я думаю, твоя главная забота о страницах.Тогда это мое предложение: во-первых, вы должны указать, какие части страниц могут меняться от одного приложения к другому.Затем вы должны вынуть данные этих частей, чтобы получить шаблоны.Теперь вы должны решить (в зависимости от ваших требований), как вы хотите хранить данные (например, в XML-файлах, БД).Теперь вы можете компилировать свои страницы из шаблонов онлайн или офлайн в зависимости от ваших потребностей.

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