我很想知道是否有用于创建具有多个版本的应用程序的设计/架构模式(例如Windows如何具有Home,Standard或Ultimate版本)。
主要思想是我想创建一个应用程序,根据用户的版本(基本版,高级版,完整版)为用户提供不同的功能。有人建议使用插件......这是一个很好的方法吗?
谢谢!
答案 0 :(得分:0)
我认为在这种情况下模式不会帮助你。
所有这些版本(基本版,高级版,完整版)在各种模块中都有所不同。如果您在程序中支持良好的模块化,则只能使用与您的每个版本相对应的独立构建脚本,您可以在其中设置模块集。
答案 1 :(得分:0)
有很多选择。
从概念上讲,最简单的方法是构建3个不同的应用程序,然后重新使用。因此,您可能拥有一个“引擎”,提供共享功能,以及在引擎上运行的3个独立应用程序 - “基本”,“高级”,“完整”。这有点像MS操作系统的风格 - 引擎是基本的操作系统,不同的版本包含在引擎之上构建的不同应用程序。
这条路线的好处在于您可以创建一个概念上有效的产品 - 版本之间没有很多依赖关系,如果“完整”版本决定不包含“基本”版本的功能,因为它们不会没有意义,他们不必担心打破这种依赖。
第二个模型是构建单个应用程序,并通过配置控制其行为 - 在构建时或运行时。例如,“ifdef”允许单个C代码文件以不同的操作系统为目标;同一SQL数据库引擎的不同版本支持的处理器数量可能由运行时配置控制。
这样做的好处是您只需要一个代码库来管理,但在版本之间引入了非常紧密的耦合,并且很快变得难以管理。
许多应用程序使用“插件”模型;这是第一个选项的变体,因为它要求您首先构建框架应用程序,并且每个版本的功能都受到框架可以执行的操作的限制。许多游戏设备都是以这种方式设计的,版本之间的差异主要取决于游戏随附的插件。
这在架构上非常干净,但对项目提出了真正的风险 - 您最聪明的开发人员都希望在框架上工作,没有人愿意在实际产品上工作;如果你的框架开发人员猜测真正的要求是错误的,你最终会得到一个支持错误产品的出色框架。此外,该框架往往非常关注计算机科学问题,如日志记录或插件配置,而不是真正的业务问题。我亲眼看到了这一点,这有点悲剧。
除非你有无限的时间和预算,否则我会从选项1开始,一旦你的第一个版本出门,就会演变为选项3。