Прошу прощения за многословность этого вопроса, так как, когда я его пишу, я пытаюсь продумать мою проблему с дизайном!
Я унаследовал приложение Swing, которое требует реорганизации в приложение RMI. Заказчику требуется, чтобы графический интерфейс Swing работал локально и обменивался данными через RMI с удаленным серверным процессом, который включает класс Controller, который направляет вызовы в разделы бизнес-логики и сохранность базы данных на стороне сервера, когда стимулируется EventListeners, которые перекрывают разрыв между клиентом Swing и контроллер.
Я должен реализовать дизайн MVC, позволяющий разрабатывать новые представления для использования с сервером.
В настоящее время графический интерфейс клиента Swing содержит JTree, который заполняется с помощью DefaultTreeModel. Эта модель построена с использованием объектов DefaultMutableTreeNode, которые заполняются состоянием бизнес-объекта через преобразователь BusinessObject, который находится между этими объектами и моим источником данных.
У меня нет проблем с пониманием того, как клиент и TreeModel связаны между собой: я установил TreeModelListener для поиска изменений в TreeModel. Если объект TreeModel изменяется, я перерисовываю JTree, вызывая его метод treeHasChanged ().
Однако у меня болит голова, когда я пытаюсь изобразить, какой процесс будет стимулировать TreeModel, чтобы его содержимое заполнилось последними данными в базе данных, что в свою очередь вызвало бы мой TreeModelListener для обновления Jtree моего графического интерфейса. Кто должен «владеть» TreeModel? Должен ли это быть класс в модели, который составляет часть состояния контроллера? Должны ли Действия в Контроллере EventListeners GUI сделать жесткий вызов для запуска подпрограммы для обновления TreeModel?
Или же TreeModel является расширением виджета GUI, и в этом случае это компонент View? Если это так, что будет правильным способом вызвать обновление состояния этого объекта?
Вероятно, я должен отметить, что в последние дни я размышлял с точки зрения наблюдателей и слушателей, поэтому я, вероятно, виновен в попытке вызвать поведение, происходящее за спиной стрельбы наблюдателя.
Ваш, очень растерян!