Жаргон за то, предоставляет ли фреймворк пользовательского интерфейса платформы основной l oop для вас? - PullRequest
1 голос
/ 09 апреля 2020

Когда я учился в университете, я помню, что в одном из моих учебников был указан c жаргон, различающий guish эти две разные парадигмы API, но, для жизни, я не могу вспомнить, какую книгу это был в, и Google не помог.

  • API, такие как Win32, Xlib и SDL, где вы находитесь на вершине стека вызовов и должны написать свой собственный основной l oop и взять на себя ответственность за вытаскивание системных событий из очереди, используя такую ​​конструкцию, как GetMessage, XNextEvent или SDL_PollEvent.

    (дизайн, который требует больше навыков, но предоставляет максимальный контроль над написанием игровых движков или приложения с ограниченными ресурсами, которые должны запускаться на 80286 процессорах, для которых был создан предок Win16 Win32.)

  • API, такие как Qt, GTK, wxWidgets, Fltk, Swing, Tk, и др c. где вы выполняете некоторую инициализацию, подключаете обработчики событий, и платформа предоставляет вам событие l oop, либо порождая фоновый поток, либо требуя явной передачи управления в среду. (например, QApplication.exec(), gtk_main(), IMPLEMENT_APP(wxAppSubclass), Fl::run(), и т. д. c.)

Кто-нибудь знает, какие два термина я пытаюсь запомнить?

Имейте в виду, что это не был немедленный режим против сохраненного режима . Возможно иметь приложение с сохраненным режимом, в котором вам все еще придется прокачивать событие l oop, или приложение с непосредственным режимом, в котором вы рисуете в обратном вызове, отправленном с предоставленной платформой главной l oop.

1 Ответ

0 голосов
/ 19 апреля 2020

Два описанных вами случая обсуждаются в посте блога Мартина Фаулера об InversionOfControl . Хотя он, вероятно, не придумал этих терминов, он дает хорошее резюме:

Инверсия управления - ключевая часть того, что отличает среду от библиотеки. Библиотека - это, по сути, набор функций, которые вы можете вызывать , в наши дни обычно организованные в классы. Каждый вызов выполняет некоторую работу и возвращает управление клиенту.

Фреймворк воплощает в себе какой-то абстрактный дизайн со встроенным поведением. Чтобы использовать его, вам нужно вставить свое поведение в различные места фреймворка либо с помощью подклассы или подключив свои собственные классы. Код платформы затем вызывает ваш код в этих точках.

Слова, которые вы ищете для Библиотеки и платформы?

...