假设我制作一款井字游戏,我使用极小值与人类/计算机对手进行游戏。另一个人带着一个新的决策想法,用代码表达出来。如果我创造了一些方法让他使用那个算法而不是我的旧算法,而不改变我的原始代码,这是否意味着我创造了可插拔的软件(这个新的搜索例程不是插件吗)?另外,如果我这样做,让别人可以写一些方法来改变这些片段呢?它是剥皮的还是可插拔的,还是两者都有?
谢谢。
我通常把
- 松散耦合架构
- 插件/插件架构
区别主要在于基数。
假设你在一个外部库中定义了AI算法,并为用户提供了一种替换算法的方法,而无需重新编译原始应用程序,你有一个松耦合的应用程序。
我在封装好的企业软件中见过这样做,在那里你可以更改数据访问层以与SQL Server或Oracle通信。
另一方面,一个外接架构是一种架构,其中应用程序可能自带一些默认功能,但它允许用户添加零或多个不同的行为。有时候,会有一个额外的UI元素列出各种选项;一个例子是Photoshop的各种图像处理滤镜插件。我更喜欢术语插件,而不是插件,正是因为它将目标定义为能够向应用程序添加行为,而不仅仅是替换它。(当然,Plug-in也有类似的信号,但我认为Add-in更明确一些。)如果您可以改变应用程序的外观,我们通常将其称为蒙皮,但您可能会认为这只是插件架构的特殊情况。