Dev*_*rre 5 language-agnostic plugins
我不太关注语言特定的答案,只是实现插件系统的一般模型(如果你想知道,我正在使用Python).我有自己的想法(注册回调,这就是它),但我知道其他人存在.什么是正常使用的,还有什么是合理的?
插件系统是什么意思?依赖注入和IOC容器听起来是一个很好的解决方案吗?
我的意思是,嗯,这是一种在不改变功能的情况下将功能插入基本程序的方法.我出发时并不打算定义它.依赖注入看起来并不特别适合我正在做的事情,但我对它们知之甚少.
为了将来的参考,我在这里复制了Erich Gamma、Kent Beck 所著的优秀的Eclipse 贡献中给出的“ Enablers 规则”(替代链接) 。
- 邀请规则——只要有可能,让其他人为你的贡献做出贡献。
- 延迟加载规则 - 仅在需要时才加载贡献。
- 安全平台规则 - 作为扩展点的提供者,您必须保护自己免受扩展程序的不当行为的影响。
- 公平游戏规则 - 所有客户都遵循相同的规则,即使是我。
- 显式扩展规则 - 显式声明平台可以扩展的位置。
- 多样性规则 - 分机点接受多个分机。
- 良好的围栏规则 - 当将控制权传递到代码之外时,请保护自己。
- 显式 API 规则 - 将 API 与内部分离。
- 稳定性规则——一旦你邀请某人做出贡献,就不要改变规则。
- 防御性 API 规则 - 仅公开您有信心的 API,但准备好在客户要求时公开更多 API。