-1
我有一個程序,它通過網絡獲取命令並將它們分配給一個特定的函數。現在我想實現一個插件功能,我可以在一個文件夾中添加一個.dll文件。下一步是根據命令調用dll中的方法。反射+函數指針vs觀察者模式
我有兩個想法如何解決這個問題,但我不知道其中哪些是更好/更高性能:
初始化從反射的dll所有方法+命令,並將其存儲在一個
std::map<std::string, void(*func)(args...)>
。當程序收到一條命令時,它會在地圖中查找相關的函數並調用它。將DLL加載到運行時並創建一個接口,將
std::string
與參數交給所有已實現它的dll。 dll中的方法使用if
語句來檢查可以在那裏處理的命令。 (觀察者模式)
如果有更好的選項,我沒有提到讓我知道。
什麼術語是不正確的,所以我可以編輯我的問題?選項2是否更具執行力,還是隻是「更清潔」? –