控制器接收用戶輸入。控制器操縱/編輯模型。 視圖可以查詢模型以便獲取diplaying的新狀態。我不明白的是誰實際上通知了變更觀點?因爲在原理圖概述中,看起來控制器發送修改消息,並且模型也通知更改視圖。模型 - 視圖 - 控制器:誰通知視圖
即使在這個例子中,兩者都會通知視圖。如果控制器例如發送針的位置,爲什麼模型仍然要通知視圖?
[數字是從我們教授的幻燈片,所以它們是正確的呢]
控制器接收用戶輸入。控制器操縱/編輯模型。 視圖可以查詢模型以便獲取diplaying的新狀態。我不明白的是誰實際上通知了變更觀點?因爲在原理圖概述中,看起來控制器發送修改消息,並且模型也通知更改視圖。模型 - 視圖 - 控制器:誰通知視圖
即使在這個例子中,兩者都會通知視圖。如果控制器例如發送針的位置,爲什麼模型仍然要通知視圖?
[數字是從我們教授的幻燈片,所以它們是正確的呢]
它變得有點困惑,所以我用Google搜索瞭解一些主要的authorities不得不說,因爲維基百科和第一次命中不如他們似乎是。
所以看起來控制器通知視圖。
但重要的是要注意,視圖和控制器都依賴於模型。然而,該型號不依賴於視圖或控制器。這是分離的關鍵好處之一。這種分離允許模型獨立於視覺呈現而被構建和測試。
當然和控制器不能是唯一一個誰改變了模型。由於這個原因確實有一些變化:
被動模型是當一個控制器獨佔操縱模型時採用。控制器修改模型,然後通知視圖模型已經改變,應該刷新。該場景中的模型完全獨立於視圖和控制器,這意味着模型無法報告其狀態更改。
活動模型用於模型在沒有控制器參與的情況下改變狀態。當其他來源正在更改數據並且更改必須反映在視圖中時,可能會發生這種情況。因爲只有模型檢測到內部狀態發生變化時,模型必須通知視圖刷新顯示。 - >解釋案例。
型號不必一定通知視圖 - 在這種情況下你被動執行MVC,請參見wikipedia。
該模型可以例如在背景中計算某些東西,例如,它可以計算粒子系統中粒子的位置,並且它可以在這裏和那裏通知視圖進行自我更新 - 即推送模型通常比從查看中輪詢模型更高效。
例如,在WebSockets和Comet之前,總是通過Web視圖通知控制器輪詢模型並呈現新視圖。使用WebSockets或Comet,您可以讓Controller通知視圖。
在任何情況下,實現MVC時都會有無數的旋轉,它並不是一成不變的,當然您可以根據自己的使用情況進行調整。
所以它是相當讓查看投票模型的選擇,模型直接通知視圖,或者控制器更新模型 - >模型通知控制器 - >控制器通知視圖或控制器更新模型 - >控制器輪詢模型的狀態 - >控制器通知視圖? – Matthias
是的,有多種選擇。例如,在WebSockets和Comet之前,總是通過Web視圖通知控制器輪詢模型並呈現新視圖。使用WebSockets或Comet,您可以讓Controller通知視圖。也就是說,你的教授對此可能有更嚴格的看法。 –
@Matthias,那不是MVC。你所描述的可能被稱爲MVP。 –