C++基礎學習之10
阿新 • • 發佈:2019-01-27
相信有過大型軟體開發經驗的人都會熟悉 外掛開發(Plugin),這是一種輕核心的開發機制,通過獨立的外掛開發能夠將不同的外掛功能進行組合,從而實現靈活的即插即用。
目前支援外掛功能的軟體非常多,從Linux下的 Vim、Emacs、Sublime編輯器,到windows下的PS、3DMax、Maya、AutoCAD,再到 ArcGIS,幾乎每個行業的軟體都會有外掛開發的影子,這些軟體無一不是通過支援外掛的方式來進行擴充套件,這種機制到底有什麼好處呢?
1. 主模組獨立(Exe和Core DLL),新增外掛時 不需要重新編譯更新;
2. 外掛之間功能相對獨立,依賴性小,便於分散式開發;
3. 外掛更新、擴充套件相對容易;
一個典型的外掛示例程式碼如下:
PluginInterface 作為外掛介面類,如果想要實現新的外掛,只需要繼承該介面,並實現裡面對應的方法,比如 install 和 install,當繞也可以擴充套件功能實現,然後實現對應的方法。/** PluginInterface,外掛介面類*/ class MainFrame; // 主程式框架 class PluginInterface { public: virtual void install(){ m_bInstalled = true; }; virtual void unstall(){ m_bInstalled = false; }; virtual MainFrame* getMainFrame(); protected: bool m_bInstalled; }; /** PluginManager,外掛管理類*/ class PluginManager { public: void installPlugins(); // 初始化載入所有外掛 void unstallPlugins(); // 反初始化解除安裝所有外掛 protected: std::vector<PluginInterface*> m_vecPlugins; MainFrame* m_pMainFrame; };
對於C++的DLL,可以通過封裝動態載入的方式進行,當然對於其他一些語言或庫,比如 java、QT等,都實現了自己的外掛(DLL)載入方式,可以直接呼叫,這裡作者就不再多說了。
留給大家一個測試,結合前面的章節《C++基礎學習之8 - 玩轉DLL》,實現一個自己的外掛吧!還等什麼呢?趕緊行動起來!