1

在我上大学的时候,我记得我的一本教科书有专门的术语来区分这两种不同的 API 范例,但是,就我的一生而言,我不记得它在哪本书中,而谷歌也没有帮助。

  • 像 Win32、Xlib 和 SDL 这样的 API,您位于调用堆栈的顶部,必须编写自己的主循环并负责使用GetMessageXNextEventSDL_PollEvent.

    (这种设计需要更多技巧,但可以最大限度地控制编写游戏引擎或需要在 Win32 的 Win16 祖先设计的 80286 CPU 上运行的资源受限应用程序。)

  • 像 Qt、GTK、wxWidgets、Fltk、Swing、Tk 等 API,您可以在其中执行一些初始化、连接事件处理程序,并且框架为您提供事件循环,方法是生成后台线程或要求您明确地将控制权转移到框架。(例如QApplication.exec(), gtk_main(), IMPLEMENT_APP(wxAppSubclass),Fl::run()等)

有谁知道我很难记住哪两个术语?

请记住,这不是即时模式与保留模式。可能有一个保留模式应用程序,您仍然必须自己泵送事件循环,或者有一个即时模式应用程序,您可以在从平台提供的主循环分派的回调中进行绘图。

4

1 回答 1

0

您描述的两个案例在Martin Fowler 关于 InversionOfControl 的博文中进行了讨论。尽管他可能没有提出这些术语,但他给出了一个很好的总结:

控制反转是使框架与库不同的关键部分。库本质上是一组可以调用的函数,现在通常组织成类。每个调用都会做一些工作并将控制权返回给客户端。

框架体现了一些抽象设计,并内置了更多行为。为了使用它,您需要通过子类化或插入您自己的类来将您的行为插入到框架中的各个位置。然后,框架的代码会在这些点调用您的代码。

是你要找的词库和框架吗?

于 2020-04-19T11:23:37.693 回答