【问题标题】:Design pattern for software updates软件更新的设计模式
【发布时间】:2012-06-23 16:12:29
【问题描述】:

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

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

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

【问题讨论】:

  • 不要让您对优雅的担忧欺骗了您——您的解决方案是最好的。试图简化问题并变得更“优雅”实际上只会造成重复。

标签: design-patterns auto-update updates


【解决方案1】:

我在一个包含版本控制系统的系统中工作,以将数据库迁移到最新版本,它的工作原理就是这样。我们所做的唯一改进是有时我们希望避免遍历所有版本,因为这是一个漫长的过程,因此您可以定义从任何版本到任何版本的迁移 如果您使用的是 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。但只有在迁移时间很长的情况下才值得...

如果您不需要实际迁移数据,而只是以最新版本的格式使用它,您可以使用Adapter Pattern使用对象组合来转换具有“1.3”格式的对象来实现相同的目的使用中间的适配器链转换为“1.8”格式。

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

【讨论】:

  • +1,感谢您的回答。当您创建从 v1.4 到 v1.7 的脚本时,您是手动完成的,还是使用自动化工具完成的,因为它让我觉得编译器中的代码优化器会是这样的事情擅长。
猜你喜欢
  • 2010-09-14
  • 1970-01-01
  • 2023-03-29
  • 1970-01-01
  • 2018-07-13
  • 2013-04-25
  • 1970-01-01
  • 1970-01-01
  • 2011-06-21
相关资源
最近更新 更多