Приложение Swing, использующее потоки на основе MVC

1

В моем приложении есть несколько потоков, которые инициируются в основном классе.

И я хочу использовать MVC в этом приложении Swing.

Основной класс ожидает подключения сокета от какого-либо клиента, а затем, когда клиент подключен, я создаю объект telnet из создаваемого класса Telnet. И этот класс имеет все общие ресурсы, которые будут использовать потоки.

После этого я запускаю свои потоки, передавая объект telnet в качестве параметра, поэтому он будет использоваться для синхронизации потоков.

В моем приложении пять потоков: клиент, управление, сервер, узел и агент.

Каждый из них имеет определенную функцию.

Так что это мой сценарий.

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

Я уже использовал MVC в приложении Swing, но без потоков.

  • 4
    Ваш вопрос кажется мне достаточно широким, и вы, возможно, захотите конкретизировать этот вопрос немного больше, чтобы предоставить нам больше мяса для работы. Чем больше соответствующих деталей вы можете предоставить, тем лучше пример кода, который вы можете показать нам, тем лучше мы сможем вам помочь.
  • 3
    Например, что вы подразумеваете под "позвонить в мои темы"? Вы хотите создать новую тему? Вы хотите общаться с объектами, методы которых запускаются в фоновом потоке? Где ваша модель вписывается во все это? И где именно ты застрял?
Показать ещё 1 комментарий
Теги:
model-view-controller
swing

1 ответ

3
Лучший ответ

Возможно, это я, но ваш вопрос по-прежнему кажется мне довольно широким, и поэтому я могу предложить только широкие предложения.

  • Ключом в моем сознании будет то, как объекты будут взаимодействовать друг с другом, и я думаю, что для меня это более важно, чем то, как "потоки" общаются.
  • Лучше всего я считаю использование шаблона наблюдателя.
  • Если ваши потоки создаются с помощью SwingWorker, у вас есть два основных способа связаться с вашим приложением Swing:
    • Вы можете использовать пару метода публикации/процесса, в которой вы передаете объект в вызов метода публикации, а затем выполняете вызовы Swing, возможно, чтобы изменить состояние модели с помощью метода process. Мне тоже не нравится этот подход, поскольку связь увеличивается, так как SwingWorker должен знать о структуре и поведении кода представления или управления, который он вызывает внутри метода process.
    • Или вы можете использовать врожденные возможности SwingPropertyChangeSupport SwingWorker, чтобы позволить слушателям (здесь контроллеру) получать уведомления об изменениях в состоянии рабочего. Затем контроллер может извлечь измененную информацию и передать ее модели. Я предпочитаю этот подход, потому что для меня гораздо легче ослабить сцепление.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню