1. 插件市场上传、下载
插件市场就是发布插件的地方,基本功能就是上传、下载。再加上会员、积分或其他变现机制就是一个比较完善的插件市场了。
2. 加载插件目录的文件
一般的,插件系统都有一个特定的插件目录。系统遍历插件目录,然后依次加载插件入口文件即可。
插件入口文件,可以是一个,也可以多个。不过一个统一集中的入口文件,可能是更好一点的选择。
类似PHP此类脚本语言,动态加载类-函数都是很方便的。
如果是C++或java这类需要编译的语言,往往要用到加载动态库、反射之类的知识。
3. "注册"钩子到系统
"注册"并不是一定要执行一个注册函数,只要能让系统识别到钩子就行。比如,约定钩子必须定义一个函数:say_hello()。
只要加载插件,就执行say_hello。定义say_hello函数本身其实就是注册钩子的过程。
一般的,还是使用"观察者模式",来实现钩子系统。使用成熟的模式,利用成功的经验,开发效率会更高,也更方便他人理解。
一个插件系统钩子的多少,决定了插件的功能有多强大。钩子越多,插件可实现的功能就越多。
不过,钩子越多,曝露的细节也越多,安全性也不得不考虑。
4. 执行钩子函数
使用“观察者模式”执行过程也很好理解。
执行的内容,可以是打印日志,也可以是过滤或装饰,也可以是增加菜单项-展示页面等等。
暂无评论,抢个沙发...