Більшість інструментаріїв GUI в даний час використовують модель Signals + Slots. Це було Qt та GTK +, якщо я не помиляюся, хто став першопрохідцем.
Ви знаєте, віджети або графічні об'єкти (іноді навіть ті, які не відображаються) надсилають сигнали до обробника основного циклу. Потім обробник основного циклу викликає події , зворотні виклики або слоти, призначені для цього віджета / графічного об'єкта. Зазвичай за замовчуванням (і в більшості випадків virtual
) обробники подій вже передбачені набором інструментів для обробки всіх заздалегідь визначених сигналів, тому на відміну від попередніх конструкцій, де розробнику доводилося писати весь основний цикл і обробник для кожного повідомлення кожного (думаю WINAPI), розробнику залишається турбуватися лише про сигнали, які йому потрібні для впровадження нової функціональності.
Зараз, наскільки я знаю, ця конструкція використовується в більшості сучасних наборів інструментів. Є Qt, GTK +, FLTK тощо. Є Java Swing. C # навіть має мовну особливість для нього (події та делегати), і Windows Forms був розроблений для цього дизайну. Фактично, за останнє десятиліття ця конструкція для програмування GUI стала своєрідним неписаним стандартом. Оскільки це збільшує продуктивність і забезпечує більшу абстракцію.
Однак моє питання:
Чи є альтернативний дизайн, паралельний чи практичний для сучасного графічного програмування?
тобто дизайн сигналів + слотів - єдиний практичний у місті? Чи можливо зробити програмування GUI будь-яким іншим дизайном? Чи побудовані будь-які сучасні (бажано успішні та популярні) набори інструментів графічного інтерфейсу на альтернативному дизайні?
std::function
, не , асинхронний сигнал. Крім того, WinAPI це забезпечити ,DefWindowProc
який обробляє повідомлення Windows , як реалізація за замовчуванням. Тож я буду стверджувати, що ваше питання засноване на хибній логіці.