Каким образом разбить Java приложение на слои/модули (JavaFX + Hibernate+PostgreSQL+Maven)?

Разрабатываю приложение для ведения производственной документации на небольшом предприятии (учебный проект). Приложение позволяет просматривать и добавлять записи в электронных журналах, например "Журнал проверок пожарной сигнализации".
Текущая версия разрабатывается как stadalone приложение. В качестве GUI используется JavaFX, база данных - PostgresSQL, система сборки - Apache Maven, ORM - Hibernate.
Обязательное требование - наличие отдельного приложения (не через браузер).
В дальнейшем, возможно, потребуется создание Web интерфейса с возможностью только чтения данных и перевод приложения на клиент-серверную архитектуру.
1. Как в таком случае разбить код на слои?
2. Как разбить это на модули в intellij idea?
На данный момент сделал следующим образом:
spoiler
5bd5923e64940288759333.png

Но есть сомнения, при таком подходе модули не будут полностью изолированы друг от друга и в дальнейшем при добавлении в систему нового звена придётся переписывать большую часть кода.
  • Вопрос задан
  • 772 просмотра
Решения вопроса 2
@asd111
У тебя получился типичный шаблон MVC т.е. model(persistent) view(ui) controller(logic).
Это нормальный шаблон проектирования, так часто делают. Т.е. когда логику пишут в контроллере, работу с данными в моделях, а работу с внешним видом во вьюхах.
Если хочешь что то другое то посмотри шаблон MVVM т.е. model view viewModel -тоже популярный шаблон и говорят лучше чем MVC хотя там тоже все зависит от рук разработчика.
Ответ написан
Комментировать
BorLaze
@BorLaze
Java developer
Вполне приемлемо. Тут главное не путаться, какие данные ходят между модулями.

Например, logic-persistance обмениваются Entity; а ui-logic - DAO.

Тогда изменение формата БД никак не повлияет на UI (потому что задача логики - интерпретировать данные БД так, как это удобно для UI), и наоборот - какое-то изменение на UI не затронет базу (например, поменяли text на select)/
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы