В 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 для сохранения.
Комментариев нет:
Отправить комментарий