2010-06-06 65 views
1

在編寫代碼時,我發現需要更改數據模型(例如添加/更改/刪除類中的數據成員)。當這些數據模型屬於一個接口時,在不破壞現有客戶端代碼的情況下,似乎很難進行更改。所以我想知道是否有任何設計接口/數據模型的最佳實踐,以最小化進化過程中的影響。數據模型演變

我能從google找到的最接近的就是數據契約版本控制。但是這似乎是一個.net特定的主題。我想知道是否同樣的做法適用於Java世界,或者有不同的或通用的方式來處理數據模型的演變。

謝謝

回答

1

在Java或數據建模領域沒有簡單的答案。

  • 某些更改向上兼容;例如新增方法,可選字段,子類等等。
  • 某些更改不兼容,但可以使用簡單轉換進行處理;例如添加一個必填字段可以通過添加額外構造函數參數的轉換來支持。
  • 一些變化不可避免地需要主要的程序員干預。

另一點需要注意的是,當數據模型對應的數據是持久性的,並且在數據模型更改時無法拋棄時,問題會變得更加困難。這被稱爲「模式演變」問題,我相信已經證明沒有通用的解決方案。