2013-08-03 35 views
0

我習慣了Web MVC,現在我第一次在Java中實現它,我對View應該觀察什麼,應該觀察單個實體還是應該觀察服務層明顯坐着在實體的頂部,所以當有變化時,服務可以通知視圖,然後我的實體不需要也可以觀察?視圖是觀察實體還是觀察服務?

謝謝。

回答

0

您的看法應該只是表示您的對象和服務。它不應該有太多的邏輯,只是表示模型的一種方式。你在用什麼框架?有些人鼓勵更多的做法而不是其他做法。如果正確完成,您可以擁有兩個不同的視圖,例如顯示相同的數據但具有不同的表示。

+0

在MVC中雖然沒有觀察到Model層?我想知道它是否遵守實體或您的服務?我目前沒有使用任何框架。我正在嘗試從頭開始做一些基本的事情。 – ibanore

+0

您的觀點不應該觀察任何東西,它應該用來表示您的模型和控制器的數據。但是,如果你的意思是如果你的觀點在你的模型改變的情況下應該改變,那麼在大多數情況下答案是肯定的。在這種情況下,我想你可以說你的觀點是觀察你的模型,但只有當你的意思是這樣。 –

+0

如果視圖沒有觀察模型層,它是如何知道/得到通知,模型層中的某些內容已經發生變化,並且需要自行更新? – ibanore

0

該視圖只能與控制器交互以防止太多的糾纏。控制器可以是對視圖內發生的事件作出反應的觀察者,並將其委託給模型層。絕不應該視圖能夠修改/操作模型圖層中的任何東西。視圖應該用控制器提供的數據更新。你不應該試圖繞過控制器,直接從視圖內部直接進入模型層。它可能是誘人的,看起來合乎邏輯,但最終你會爲此付出代價。結束在視圖內的邏輯和控制器根本沒有任何真正的控制。

+0

控制器的工作是提取數據和更新模型層,但視圖應該有權訪問模型層以檢索自己的數據,否則視圖變得依賴於控制器來獲取其數據,這不是MVC設計的方式。我曾經在控制器將數據傳遞到視圖很長時間的地方,但我從此學到了更好的東西。 – ibanore

+0

@David依賴於控制器然後依賴控制器+模型層更好。該視圖不需要知道數據來自何處。如果將視圖綁定到模型層,它會強制視圖知道數據來自哪裏。瞭解控制器更新模型爲什麼在模型更改時視圖會負責自行更新?控制器可以輕鬆地將更新推送到視圖。 – Bart