В Desktop Swing приложении есть класс Item
в пакете Data, класс ItemFrame
(графическое заполнение и редактирование класса Item
) в пакете GUI и класс NetWorker
в пакете NetDB для работы с DB и сетью. Имена классов и пакетов - условные.
По логике программы, при создании (и редактировании) экземпляра класса Item
вызывается графический интерфейс ItemFrame
в который заносятся данные, при нажатии кнопки "Сохранить" создается объект Item
, который должен быть записан в DB и, при определенных условиях, должны вызываться методы для его передачи по сети и записи в XML.
Получается, что при нажатии кнопки вызывается конструктор Item
из другого пакета, и методы по работе с DB и сетью из третьего. Выглядит немного запутанно.
Как в таком случае правильно организовать структуру, в каком классе какие методы лучше реализовать?
Интересует именно правильное решение с точки зрения ООП.
Вы на верном пути. Разделение пакетов по обязанностям -- это правильно. Тот факт, что при этом будет какое-то место, которые вызывает код из нескольких пакетов -- неизбежен.
Возможно вам стоит придерживаться классической трехслойной архитектуры UI->BLL->DAL (стрелками обозначено направление взаимодействия). Первый и последний слои у вас уже есть, осталось ввести слой бизнес-логики. UI будет передавать ему данные (или уже заполненный Item
), BLL будет создавать/брать переданный Item
и образаться к NetDB для сохранения.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Возможен ли интерфейс не содержащий ни одного члена и если да, какой практический смысл от такого интерфейса?
Столкнулся с проблемой, при компиляции приложения libgdx, приложение не открывает окно, а завершается с сообщением Process finished with exit code -1073740791 (0xC0000409)...
Здравствуйте, требуется помощь профессионала, так как эта задача чрезвычайно сложна
Как узнать установлен ли на телефоне WhatsApp не вызывая startActivity?