相信有过大型软件开发经验的人都会熟悉 插件开发(Plugin),这是一种轻内核的开发机制,通过独立的插件开发能够将不同的插件功能进行组合,从而实现灵活的即插即用。
目前支持插件功能的软件非常多,从Linux下的 Vim、Emacs、Sublime编辑器,到windows下的PS、3DMax、Maya、AutoCAD,再到 ArcGIS,几乎每个行业的软件都会有插件开发的影子,这些软件无一不是通过支持插件的方式来进行扩展,这种机制到底有什么好处呢?
1. 主模块独立(Exe和Core DLL),添加插件时 不需要重新编译更新;
2. 插件之间功能相对独立,依赖性小,便于分布式开发;
3. 插件更新、扩展相对容易;
一个典型的插件示例代码如下:
/** PluginInterface,插件接口类*/
class MainFrame; // 主程序框架
class PluginInterface
{
public:
virtual void install(){ m_bInstalled = true; };
virt