【翻譯】MODELS - VIEWS – CONTROLLERS


原文:http://heim.ifi.uio.no/~trygver/1979/mvc-2/1979-12-MVC.pdf

譯者:winter(http://winter-cn.cnblogs.com)

譯注:本文是MVC最初提出並確定概念名稱的論文

MODELS

Model表示知識,一個Model可以是一個單獨的對象(真沒意思- -!),或者它可以是一些對象的結構。 建議的實現方式應該支持把知識表現成類似語義網的東西(假如我對Laura的理解是正確的)。

一方面,model和他的部件可能有一對一的通訊;另一方面,它如實地反映了它的所有者感知的現實世界的模型。因此model的節點應該表示問題中的一個可以標識的部分。

model的節點應該全部存在於相同的問題級別,將面向問題的節點(如日歷的中的約會)與實現細節(如圖形)混合在一起是一種令人易混淆的做法,並且也被認為是一種不好的形式。

VIEWS

view是它的model的(可見)表示。它通常會重點照顧某幾個屬性或者模型然后無視其它的。這樣它就成了一個展現過濾器的角色。

view被連接到它的model(或者model的部分)並且以問問題的方式得到展現所必須的數據。它還可能發出合適的消息來更新model。所有這些問題和消息應該在model的概念范疇之中,因此view必須知道它所表示model屬性的語義。(例如,它可能會請求model的id並且期望得到一個Text的實例,而它不能斷言model是屬於Text類的。)

CONTROLLERS

controller是用戶和系統之間的鏈接。controller向用戶提供輸入的方式是指定合適的view將自己展現到屏幕合適位置。它處理用戶輸出的方式是以菜單或者其它能夠支持命令或者數據的形式表示用戶的意願。controller接收這樣的用戶輸出,將之翻譯成合適的消息並且把這些消息傳遞給一個或者多個view。

controller永遠不會對view產生附加,比如它永遠不會在view的節點之間繪制箭頭來把它們連接起來。

反過來說,view永遠不會知道用戶輸入,比如鼠標操作和按鍵。給一個controller寫一個方法來發消息給view總是可以做到的,這樣可以精確表示任何用戶指令的序列。

EDITORS

controller被連接到了它所有的view,它們被稱為controller的部件。一些view提供了一種特殊的controller,其名為editor。它允許用戶修改view所表示的信息。這樣的editor可能被切入controller和他的view之間的路徑,並且作為controller的擴展而存在。一旦編輯操作完成,editor將會被從路徑上除去並且銷毀。

注意editor根據它所連接的view的隱喻來跟用戶交互,於是editor與view是緊密相關的。controller可以通過向view請求的方式來得到一個editor的引用——不應該有其它來源。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM