假设我做了一个井字游戏,我使用极小极大来玩人类/计算机对手。其他一些人提出了一个新的决策想法,用代码表达。如果我为他创建了某种方式来使用该算法而不是我的库存算法,而不更改我的原始代码,这是否意味着我已经创建了可插入软件(新的搜索例程不是插件)吗?另外,如果我做到了,那么有人可以写一些方法来改变碎片怎么办?那是剥皮还是可插拔或两者兼而有之?
谢谢。
假设我做了一个井字游戏,我使用极小极大来玩人类/计算机对手。其他一些人提出了一个新的决策想法,用代码表达。如果我为他创建了某种方式来使用该算法而不是我的库存算法,而不更改我的原始代码,这是否意味着我已经创建了可插入软件(新的搜索例程不是插件)吗?另外,如果我做到了,那么有人可以写一些方法来改变碎片怎么办?那是剥皮还是可插拔或两者兼而有之?
谢谢。
我通常区分
区别主要在于基数。
假设您在外部库中定义 AI 算法,并为用户提供一种无需重新编译原始应用程序即可替换算法的方法,您就有了一个松散耦合的应用程序。
我已经在收缩包装的企业软件中看到了这一点,您可以在其中更改数据访问层以与 SQL Server 或 Oracle 通信。不过,它是一个或另一个。
另一方面,插件架构是一种架构,其中应用程序可能带有一些开箱即用的默认功能,但它允许用户添加零个 或多个不同的行为。有时,会有一个额外的 UI 元素列出各种选项;一个例子是 Photoshop 的各种图像处理过滤器插件。我更喜欢术语Add-in而不是Plug-in,正是因为它将目标定义为能够向应用程序添加行为,而不仅仅是替换它。(当然,Plug-in也有类似的信号,但我认为Add-in更明确一些。)
如果您可以更改应用程序的外观,我们通常称其为蒙皮,但您可能会争辩说这只是插件架构的一个特例。