2012-06-23 116 views
10

是否有人知道軟件更新的任何設計模式?具體而言,我想要一個將舊文件/設置轉換爲最新版本的模式。軟件更新的設計模式

我能想到的最佳解決方案將是如何從每個版本轉換到下一個版本(例如v1.0到v1.1,v1.1到v1.2,...)的一組規則。 )。然後,要將文件/設置轉換爲最新版本,您可以按順序運行所有轉換規則。

這並不代表我是一個非常優雅的做事方式 - 有沒有更好的辦法?

(對於背景下,我在早期規劃/年的Win8 Metro應用的設計階段)

在此先感謝

+2

不要讓你擔心優雅欺騙你 - 你的解決方案是最好的。試圖簡化問題並更加「優雅」,實際上只會造成重複。 – tallseth

回答

5

我在一個系統,其中包括一個版本系統遷移到DB工作最新版本,它的工作就是這樣。我們所做的唯一改進是,我們有時想避免瀏覽所有版本,因爲這是一個漫長的過程,所以如果您使用的是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。你需要一些非常聰明的東西來構建優化的更新腳本,而不是按順序執行它們。

+0

+1堆棧適配器 – tallseth

+0

+1,謝謝你的回答。當您將腳本從v1.4創建爲v1.7時,您是通過手工創建腳本還是使用自動化工具來完成它,因爲它會讓我感到編譯器的代碼優化器會是擅長。 – stormCloud