10

有人知道围绕软件更新的任何设计模式吗?具体来说,我想要一种将旧文件/设置转换为最新版本的模式。

我能想到的最好的解决方案是制定一套规则来说明如何从每个版本转换到下一个版本(例如 v1.0 到 v1.1,v1.1 到 v1.2,...)。然后要将文件/设置转换为最新版本,您将按顺序运行所有转换规则。

这并没有让我觉得这是一种非常优雅的做事方式——有更好的方法吗?

4

1 回答 1

5

我在一个包含版本控制系统的系统中工作,以将数据库迁移到最新版本,它就是这样工作的。我们所做的唯一改进是,有时我们希望避免遍历所有版本,因为这是一个漫长的过程,因此如果您在 1.3 版本中并希望迁移到最新版本,则可以定义从任何版本到任何版本的迁移并且您有要从中迁移的脚本:

  1. 1.3 至 1.4
  2. 1.4 至 1.5
  3. 1.5 至 1.6
  4. 1.6 至 1.7
  5. 1.7 至 1.8
  6. 1.4 至 1.7

我会自动检测到它可以使用单个脚本来遍历 1.4 到 1.7 三个版本并使用 1、6 和 5。但只有在迁移时间很长的情况下才值得……

如果您不需要实际迁移数据,而只是以最新版本的格式使用它,您可以通过使用对象组合的适配器模式将“1.3”格式的对象转换为“1.8”来实现相同的目的" 格式在中间使用一串适配器。

回应评论:可悲的是,我们不得不手工完成 1.4 到 1.7。您需要一些非常聪明的东西才能从各个脚本中编写优化的更新脚本,而无需按顺序执行它们。

于 2012-07-09T03:25:45.313 回答