API需要调用用户实现的函数

时间:2013-10-24 15:03:09

标签: c++ design-patterns interface

我正在尝试创建C ++ API,但此API需要查询API的用户以获取信息。

例如,我将处理所有鼠标输入,但是当我得到左键单击事件时,我需要询问用户所点击的对象是否是他们希望与之交互的对象。如果是,那么将采取行动,否则我将忽略输入。

因此,在我的API中,当鼠标左键单击时,我需要调用一个函数,其功能取决于API的用户,并根据该函数的返回值进行评估。

这有设计模式吗?

1 个答案:

答案 0 :(得分:1)

您正在寻找的设计模式是Callback

基本上这是如何工作的如下:

  1. 您声明一个指向函数的指针。此声明将考虑返回值和要调用的函数的参数(如果有)。
  2. 您提供了一种机制,让客户端“注册”要调用的函数,客户端传入函数指针以及其他一些信息。
  3. 当您需要通知您的客户的事件发生时,您可以调用已注册的函数,并传入任何相关数据。