Нужен совет по проектированию взаимодействия между различными частями моего приложения


10

Я пытаюсь спроектировать «основной» класс (-ы) приложения Rich Desktop на основе платформы NetBeans 7. Это приложение будет использовать службы HTTP и через «push-систему» ​​через TCP будет получать сообщения.

  • Мы 3 разработчика, и мы хотим разрабатывать модули параллельно
  • Приложение будет многоуровневым (данные, бизнес, презентация)
  • Мы будем использовать Модель презентации для разделения обязанностей
  • Некоторые детальные данные (например, bean Person) будут совместно использоваться несколькими экранами (и, возможно, отображаться на нескольких экранах одновременно)
  • ...

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

  1. Итак, есть ли у вас какой-либо совет (шаблон / лучшая практика / книга / пример приложения) для координации / управления взаимодействиями внутри всего приложения?
  2. Любой совет о том, как определить содержание модулей?

Спасибо!


Небольшой пример, иллюстрирующий то, что я хочу построить: Приложение Foo User Management

  1. Запустите приложение
  2. Слева [explorer] у нас есть список платформ (список хранится в локальном файле)
  3. Вверху у нас есть кнопка для добавления новой платформы (также доступна при нажатии правой кнопки мыши)
  4. Двойным щелчком по платформе приложение вызывает службу HTTP и получает полный список пользователей. Этот список отображается в [редакторе] (в JTable)
  5. Запускается фоновый процесс: через TCP-соединение мы получаем сообщения
  6. Можно добавить нового пользователя благодаря кнопке на панели инструментов

Если приложение запускается на другом ПК и пользователь подключен к той же платформе, его список пользователей будет обновляться динамически (добавление / удаление / статус: {offline / online}) (спасибо сообщениям)

В будущем это будет модуль чата.

Мой вопрос (другими словами): какой-нибудь совет / лучшая практика, чтобы выбрать содержание каждого модуля? Если PM (Модель презентации) - это хороший способ отделить представление / бизнес и данные и создать экраны, как лучше связать несколько экранов на основе PM? Представьте, что мы разрабатываем модуль чата, как добавить запись «Обсудить с ...» в контекстное меню, которое можно щелкнуть правой кнопкой мыши по списку пользователей?


3
Непонятно, о чем вы спрашиваете. Как насчет небольшого примера, иллюстрирующего ваш вопрос?
Роберт Харви

Великий пост Гертьян Виленга. Содержит заявления о заявлениях Тома Уилера (член команды NetBeans Dream Team): java.dzone.com/news/how-to-split-into-modules
Destroyica,

Ответы:


5

Исходя из вашего требования, для начала процесс обработки ядра должен быть сделан из Command Pattern, а позже вы можете использовать шаблоны Template для обработчиков запросов. И так далее и тому подобное. Ничто не называется шаблоном мастера. Если бы они были, они нам больше не нужны.

Идея состоит в том, чтобы иметь дизайн, который позволит вам развиваться с требованиями.

Я бы начал с создания интерфейса базового модуля и дал бы интерфейс всем и некоторым утилитам вокруг него. Пусть каждый реализует свои модули на основе базового модуля.


3

Я думаю, что вы смотрите на довольно классический шаблон MVC, поддерживаемый сервисами (я полагаю, RESTful). Ключ должен отделить сервис (ы) от пользовательского интерфейса. Это не потому, что вы вводите альтернативный интерфейс, а потому, что дает вам ясность в том, каким должен быть интерфейс вашего сервиса.

Поэтому, когда вы думаете об getPeopleуслуге, убедитесь, что вы думаете о том, как вторичный (не Swing) пользовательский интерфейс будет взаимодействовать со службой. Если вы будете иметь это в виду, вы придете к довольно гибкому / развязанному решению.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.