【问题标题】:The Difference Between “Extensible” and “Pluggable” Applications“可扩展”和“可插入”应用程序之间的区别
【发布时间】:2013-08-26 01:50:59
【问题描述】:

我误解了“可扩展”和“可插入”这两个术语。谁能帮我解释一下?

【问题讨论】:

  • 这些术语有点滑。它们都密切相关,但它们往往意味着执行相同任务的方式略有不同。任务是在构建后为其添加行为。扩展和插件采用两种不同的方法。有关定义方法差异的最佳尝试,请参阅下面的答案。

标签: oop design-patterns architecture system


【解决方案1】:

从实际编码器来看:

可扩展 - 获取一些代码类并使用它作为基础在此类之上构建。密封类不能通过继承进行扩展。但是,只要原始类中的代码是可重用的,就可以通过其他方式实现可扩展性。

可插拔 - 也可以是可扩展的。使事物可插入的原因是能够将某些东西(dll)放到某处并让该东西正常工作。它是通过您的可插拔项目遵守某些规则(实现接口)来实现的。

看你怎么看,定义不同。例如,您的插件可以扩展应用程序。但是从编码的角度来看,可扩展性实际上就是以这样一种方式构建某些东西,以便您以后可以使用它并从中制作出其他东西。可插拔性是一种设计,您不知道自己的组件是什么,但无论它们是什么,您都知道它们将如何工作。

【讨论】:

    【解决方案2】:

    可扩展意味着你可以配置一个模块(或框架组件)最终做你想做的事。

    Pluggable 意味着您可以移除模块,或许可以替换为您自己的模块。该模块将完全在您的控制之下,并且最终应该做您想做的事情。

    一个很好的例子:

    魔兽地图是可扩展的。您可以创建新地图,但不能 真正去除水砖,你只是避免使用它们。同样,您不能 重新定义元素必须适合文件的位置,也许是为了节省空间。

    网络插件是可插拔的。你可以创建一个新的网络插件,但是你 不需要从另一个插件复制任何代码,也不需要 遵循任何内部格式。您确实需要关注插件 interface 这将是应用程序之间唯一的通信线路 和你的插件。两个流行的网络插件是 Adob​​e Acrobat PDF 阅读器和 Java 小程序运行器。

    在某种程度上,这些是概念性项目。可以将插件视为扩展点,从而使所有插件扩展和插件系统可扩展;然而,在编程术语中,可扩展接口往往不如插件接口灵活。

    同样,您可能会考虑将扩展点配置为“插入”应用程序;但是,与插件不同的是,扩展通常不能在应用程序之外使用,它是“扩展”。

    【讨论】:

      猜你喜欢
      • 2011-07-17
      • 2017-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-24
      • 2011-03-30
      • 1970-01-01
      相关资源
      最近更新 更多