设计模式——如果我编写一款井字游戏,允许程序员更改算法或棋盘,这是一个可插拔的架构吗?



假设我制作一款井字游戏,我使用极小值与人类/计算机对手进行游戏。另一个人带着一个新的决策想法,用代码表达出来。如果我创造了一些方法让他使用那个算法而不是我的旧算法,而不改变我的原始代码,这是否意味着我创造了可插拔的软件(这个新的搜索例程不是插件吗)?另外,如果我这样做,让别人可以写一些方法来改变这些片段呢?它是剥皮的还是可插拔的,还是两者都有?

谢谢。

我通常把

  • 松散耦合架构
  • 插件/插件架构

区别主要在于基数

假设你在一个外部库中定义了AI算法,并为用户提供了一种替换算法的方法,而无需重新编译原始应用程序,你有一个松耦合的应用程序。

我在封装好的企业软件中见过这样做,在那里你可以更改数据访问层以与SQL Server或Oracle通信。

另一方面,一个外接架构是一种架构,其中应用程序可能自带一些默认功能,但它允许用户添加零或多个不同的行为。有时候,会有一个额外的UI元素列出各种选项;一个例子是Photoshop的各种图像处理滤镜插件。我更喜欢术语插件,而不是插件,正是因为它将目标定义为能够向应用程序添加行为,而不仅仅是替换它。(当然,Plug-in也有类似的信号,但我认为Add-in更明确一些。)

如果您可以改变应用程序的外观,我们通常将其称为蒙皮,但您可能会认为这只是插件架构的特殊情况。

相关内容

最新更新