制作应用程序的一般设计要求"可插拔"

时间:2014-08-29 17:59:06

标签: design-patterns plugins

我想知道是否存在编程语言无关的范例,模型,模式等,用于设计作者打算允许第三方开发人员编写插件的应用程序。

例如,如果你想创建某种类型的文本编辑器,你只需要专注于主要组件,然后让其他人添加一个可加载的插件,它可以进行拼写检查,语法,字数,阅读水平等。 ..在原作者创建的基本编辑器中,他们需要做什么类型的事情来管理入口点,钩子等。

是否有任何技术或方法来管理它,或者这是否真的取决于平台,语言等(例如,与Web桌面GUI应用程序中的插件相同的概念? - C ++与Python)

1 个答案:

答案 0 :(得分:0)

这是一个多层次且非常通用的问题。关于基本的OO设计概念,依赖性反转(加上相关的控制和依赖注入反转)SOLID原则可能对您有所帮助。 GRASP的低耦合,间接和多态性也会给出一些指导。

每个特定的企业采用的平台几乎总是提供用于创建可插拔架构的具体机制。

最着名的可能是Java的OSGi已被移植到其他几个平台。 在.NET世界中,您可以调查MEF / MAF框架或System.AddIn名称空间中的类型。

此外,您可能会研究任何DI容器的用法,这些容器不仅仅是遵循OO设计原则而且比使用OSGi或MEF / MAF更通用。一个例子是来自微软的Unity。

此外,根据系统的大小,您可能需要考虑事件驱动的集成,这通常会提供清晰简洁的合同和非常松散的耦合。 RabbitMQ教程提供了基本模式,但实际上您最终可能会使用更低级别(ZMQ)或高级别(BizTalk,Tibco等)。