【翻译】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的引用——不应该有其它来源。

posted @ 2012-06-13 19:37 winter-cn 阅读(...) 评论(...) 编辑 收藏