反射+函数指针与观察者模式

时间:2017-08-14 17:58:26

标签: c++ dll reflection observer-pattern

我有一个程序通过网络获取命令并将它们分配给特定的功能。现在我想实现一个插件功能,我可以在文件夹中添加.dll文件。下一步是根据命令调用dll中的方法。

我有两个想法如何解决这个问题,但我不知道哪个更好/更高效:

  1. 使用反射初始化来自dll的所有方法+命令,并将它们存储在std::map<std::string, void(*func)(args...)>中。当程序收到命令时,它会在地图中查找相关的函数并调用它。

  2. 将dll加载到运行时并创建一个接口,该接口使用已实现它的所有dll的参数移交std::string。 dll中的方法使用if语句来检查命令是否可以在那里处理。 (观察员模式)

  3. 如果有更好的选择,我没有提及,请告诉我。

1 个答案:

答案 0 :(得分:0)

虽然您使用不正确的术语来描述您想要的内容,但我会说选项2是&#34;更清洁&#34;

在我看来,强制一个由插件DLL实现的单一界面是建立你正在寻求的依赖注入的最佳实践方式。