При разработке проекта встала проблема отделения логики работы различных модулей программы от их представления. Под модулем я понимаю логически объединенную группу классов.
Суть проблемы:
есть модуль_А получающий данные от различных бекэндов, каждый из которых должен иметь виджеты для настройки и мониторинга состояния. У каждого бекэнда настройки совершенно различны (например RS-485 и TCP/IP бекэнды).
Сейчас каждый бекэнд отдает свой виджет, вставляемый в нужное место, через который и настраивается. Некрасиво.
Далее, получив данные, модуль_А разбивает их на группы и рассылает прочим модулям, которые, обработав эти данные, должны нарисовать свое состояние. Релизовано так же как и в вышеприведенном случае.
Не могу придти к какому-то решению которое выглядело бы прилично. То что сделано сейчас заставляет тащить функции для работы с гуём туда где это совершенно не нужно, хоть и в отдельных классах. В качестве альтернативы можно полностью разбить каждый из модулей на две части - одна часть - логика, другая - графический интерфейс, получающий данные от первой и ничего более не делающей. Но такой способ попахивает костыльностью.
Да, все пишется на qt.
А как делаете в своих проектах вы?