2009-10-05 62 views
2

您的數據模型與您的用戶界面和域模型的關係如何?以UI爲中心與以域爲中心的數據模型 - 優缺點

的數據模型可以是相當接近的域模型,如果有,例如,一個客戶表,員工表等

的UI可能不反映在數據模型緊密雖然 - 例如,可能會有多種形式,所有形式的客戶數據以及其他各種數據都可以提供。在這種情況下,您可以使用單獨的表來保存每個表單中的數據。根據需要,數據可以在將來的某個時間點進行合併...或者,可以將表單數據直接插入到Customer表中,以便數據模型不會與UI良好關聯。

什麼已被證明對你更好?

回答

4

我發現它更清潔,可以將您的域模型映射到您正在嘗試解決的現實世界問題。

然後,您可以創建視圖模型,充當視圖所需的所有數據的存儲桶。

如說,你的UI可以經常改變,但這並不通常會改變你應對特定領域的問題...

信息可以在此模式在這裏找到:

http://blogs.msdn.com/dphill/archive/2009/01/31/the-viewmodel-pattern.aspx

+0

同意。這裏要做的一個重點是存在實現模型和用戶的心智模型。兩者通常彼此遠離,並迫使用戶將其心智模式調整爲實施模式出錯。 – Joey 2009-10-05 11:07:17

0

用戶界面可以根據不同的需求進行更改,所以通常最好將數據保存在域模型中,從任何一個用戶界面抽象出來。

0

如果我有一個RESTful服務層,他們在公開域模型。在這種情況下,用戶界面(任何特定屏幕)將調用多個這些服務,並從收集的域模型中組成屏幕。在這種情況下,雖然領域模型一直泡到UI,但UI層剔除了構建其特定屏幕所需的數據。關於使用領域模型(註釋)進行持久化,也有一些有趣的問題。 我的觀點是,領域模型可以是單一的事實來源。它可以承擔數據的工作,封裝邏輯相當好。我曾參與過多個項目,其中有許多樣板代碼將每個領域模型轉換爲DTO,VO,DO和你自己。大部分情況看起來很不必要,更多的是由於習慣。