【问题标题】:Reflection + function pointers vs Observer pattern反射 + 函数指针 vs 观察者模式
【发布时间】:2017-08-14 17:58:25
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c++ dll reflection observer-pattern


    【解决方案1】:

    虽然你使用了不正确的术语来描述你想要什么,但我会说选项 2 是“更干净”

    在我看来,强制使用由插件 DLL 实现的单一接口是建立您所寻求的依赖注入类型的最佳实践方法。

    【讨论】:

    • 什么术语不正确,所以我可以编辑我的问题?选项 2 是否也更高效,还是只是“更清洁”?
    猜你喜欢
    • 1970-01-01
    • 2010-10-05
    • 1970-01-01
    • 2017-08-22
    • 2015-12-31
    • 2016-02-20
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多