현재 대부분의 GUI 툴킷은 신호 + 슬롯 모델을 사용합니다. 내가 틀리지 않았다면 누가 그것을 개척했는지는 Qt와 GTK +였습니다.
위젯 또는 그래픽 객체 (때로는 표시되지 않은 객체) 가 메인 루프 처리기로 신호 를 보냅니다 . 그런 다음 메인 루프 핸들러 는 해당 위젯 / 그래픽 객체에 할당 된 이벤트 , 콜백 또는 슬롯 을 호출 합니다. virtual
개발자가 각각의 모든 메시지 자체에 대해 전체 메인 루프와 핸들러를 작성해야하는 이전의 설계와 달리, 사전 정의 된 모든 신호를 처리하기 위해 툴킷에서 이미 제공 한 기본 (및 대부분의 경우 ) 이벤트 핸들러가 있습니다. (WINAPI를 생각하십시오) 개발자는 새로운 기능을 구현하는 데 필요한 신호 만 걱정하면됩니다.
이제이 디자인은 내가 아는 한 대부분의 최신 툴킷에서 사용되고 있습니다. Qt, GTK +, FLTK 등이 있습니다. Java Swing이 있습니다. C #에는 언어 기능 (이벤트 및 대리자)도 있으며 Windows Forms는이 디자인을 위해 개발되었습니다. 실제로 지난 10 년 동안 GUI 프로그래밍을위한이 디자인은 일종의 기록되지 않은 표준이되었습니다. 생산성을 높이고 더 큰 추상화를 제공하기 때문입니다.
그러나 내 질문은 다음과 같습니다.
현대적인 GUI 프로그래밍에 평행하거나 실용적인 대안 디자인이 있습니까?
즉, 신호 + 슬롯 디자인은 도시에서 유일하게 실용적인 디자인입니까? 다른 디자인으로 GUI 프로그래밍을 수행 할 수 있습니까? 현대적인 (바람직하게는 성공하고 인기있는) GUI 툴킷이 대체 설계로 구축 되었습니까?
std::function
, 하지 비동기 신호. 또한 WinAPI 는DefWindowProc
Windows 메시지를 기본 구현으로 처리하는 프로세스를 제공 합니다. 따라서 귀하의 질문은 결함이있는 논리를 기반으로한다고 주장합니다.