該視圖的工作是作爲視圖技術的adapter。在這種情況下,您的視圖技術可能是通過JavaScript的HTML over jQuery。該視圖的設計應做三兩件事:
- 知道事件發生時,並傳達這些事件來演示(這可能是間接的,使用像postal.js一個消息框架)
- 告訴主持人(當記者問)「x」的值是多少,其中x是視圖中表示的值。
- 接受來自演示者的消息(通常通過直接方法調用)以更改視圖上的值。
被動視圖模式中的視圖是非有狀態。我再說一遍,一個視圖並不代表狀態。我的意思是,所有狀態和狀態轉變的知識都由主持人代表。該視圖只是提供演示者與實際視圖技術之間間接性的粘合劑。 除了以上三點,它並沒有包含任何有關如何處理它包含的信息的知識。這很重要,因爲你永遠不應該期望視圖處於一致的狀態。您應該始終讓主持人負責管理視圖的狀態。
![enter image description here](https://i.stack.imgur.com/uHb3j.png)
上面堆疊演示如何我預見模型,視圖和演示進行交互,以及它們到視圖技術和控制器的關係。
- 瀏覽器,HTML,和DOM(通過jQuery的管理)是視圖技術。這些內在複雜,並且不能代表你的模型。
- 查看保護您的邏輯從查看技術。它提供間接性,以便您可以專注於演示者中的普通舊代碼。視圖應該使用某種消息傳遞以便與主講者進行通信。這可以防止視圖和演示者之間的雙向依賴關係。它還允許多個演示者操縱視圖。
- 的主持人應負責瞭解視圖的抽象性,並根據其接口的視圖上模型的狀態應該管理。它能夠理解如何從控制器檢索型號,以及如何將型號保留回服務器。
- 模型是特定時間點的狀態表示。它也可以作爲控制器和發言人之間的DTO。在JavaScript中,將演示者行爲簡單地添加到模型上很容易,有時更可取。
- 控制器協調應用程序內的導航,並負責從演示文稿中提取後端服務。
是否繪製了自己,包括在用戶交互中改變樣式或屬性還是屬於演示者的這一部分? – 2010-07-21 11:01:06