【发布时间】:2017-08-14 17:58:25
【问题描述】:
我有一个程序,它通过网络获取命令并将这些命令分配给特定的功能。现在我想实现一个插件功能,我可以在文件夹中添加一个 .dll 文件。下一步是根据命令调用dll中的方法。
我有两个想法如何解决这个问题,但我不知道哪个更好/性能更好:
使用反射初始化 dll 中的所有方法 + 命令,并将它们存储在
std::map<std::string, void(*func)(args...)>中。当程序接收到命令时,它会在映射中查找关联的函数并调用它。将 dll 加载到运行时并创建一个接口,该接口将带有参数的
std::string移交给所有实现它的 dll。 dll中的方法使用if语句来检查命令可以在那里处理。 (观察者模式)
如果有我没有提到的更好的选择,请告诉我。
【问题讨论】:
标签: c++ dll reflection observer-pattern