是否有人知道軟件更新的任何設計模式?具體而言,我想要一個將舊文件/設置轉換爲最新版本的模式。軟件更新的設計模式
我能想到的最佳解決方案將是如何從每個版本轉換到下一個版本(例如v1.0到v1.1,v1.1到v1.2,...)的一組規則。 )。然後,要將文件/設置轉換爲最新版本,您可以按順序運行所有轉換規則。
這並不代表我是一個非常優雅的做事方式 - 有沒有更好的辦法?
(對於背景下,我在早期規劃/年的Win8 Metro應用的設計階段)
在此先感謝
是否有人知道軟件更新的任何設計模式?具體而言,我想要一個將舊文件/設置轉換爲最新版本的模式。軟件更新的設計模式
我能想到的最佳解決方案將是如何從每個版本轉換到下一個版本(例如v1.0到v1.1,v1.1到v1.2,...)的一組規則。 )。然後,要將文件/設置轉換爲最新版本,您可以按順序運行所有轉換規則。
這並不代表我是一個非常優雅的做事方式 - 有沒有更好的辦法?
(對於背景下,我在早期規劃/年的Win8 Metro應用的設計階段)
在此先感謝
我在一個系統,其中包括一個版本系統遷移到DB工作最新版本,它的工作就是這樣。我們所做的唯一改進是,我們有時想避免瀏覽所有版本,因爲這是一個漫長的過程,所以如果您使用的是1.3版本並且想要遷移到最新版本,那麼您可以定義從任何版本到任何版本的遷移 版本和你的腳本遷移來自:
我會自動檢測,它可以使用一個腳本去了三個版本1.4到1.7,並使用1,6和5。這只是值得的,如果遷移是漫長的,但...
如果您不需要實際遷移數據,但只是以最新版本的格式使用它,則可以使用Adapter Pattern使用對象合成將具有「1.3」格式的對象轉換爲「1.8」 「格式在中間使用適配器鏈。
迴應評論: 不幸的是,我們必須手動做到1.4到1.7。你需要一些非常聰明的東西來構建優化的更新腳本,而不是按順序執行它們。
+1堆棧適配器 – tallseth
+1,謝謝你的回答。當您將腳本從v1.4創建爲v1.7時,您是通過手工創建腳本還是使用自動化工具來完成它,因爲它會讓我感到編譯器的代碼優化器會是擅長。 – stormCloud
不要讓你擔心優雅欺騙你 - 你的解決方案是最好的。試圖簡化問題並更加「優雅」,實際上只會造成重複。 – tallseth