码迷,mamicode.com
首页 > Web开发 > 详细

谈谈MVC——MVC初印象

时间:2015-05-30 13:31:07      阅读:136      评论:0      收藏:0      [点我收藏+]

标签:

  M、V、C之间有很强的关联性与独立性,看似矛盾的解释,却有十分奥妙的分工与合作关系。

彼此的关联性

  以”常规的“MVC解释法,彼此的关系如图所示:

  技术分享

Controller与View的关联性

  在Controller与View的关联性上,彼此都是双向关系,但Controller的主动性较高。

  当Controller为”主动“角色时:

    Controller可决定要显示哪一个View

  当View为"主动”角色时:

    View可决定数据要送回到哪一个Controller的Action。

    当View需要数据时,可决定数据应该从哪一个Controller的Action取得。

 

View与Model的关联性

  在View与Model的关联性上,View是站在“比较主动”的一方,而Model则是一个“数据服务提供商”的角度出发。

  View的数据基本上是从Controller传过来的,而传过来的数据型别却是Model所定义的。因此,View与Model之间大多是“彼此参考”的关系,也就是View会参考Model中的型别定义。如图所示

        技术分享

  若是发现从Controller传到View的数据不足以完整显示,此时,View的角色就会立即转变为“主动”,直接对Model进行数据查询,并获得数据。例如,欧诺个过ORM技术,可能会有延迟装入的机制,实际取得数据的时机,将是在View显示数据的时候。除此之外,一般在规划网站时,通常会先规划界面的外观,借此定义该界面应该会出现什么数据或字段。

 

Model与Controller的关联性

  在Controller与Model的关联性中,Controller永远居于“主动”的角色。Controller负责调用或使用Model所定义的各种类别,而Model很单纯的仅仅提供“数据服务”或“验证服务”给Controller使用。

 

 

彼此的独立性

  虽然M、V、C之前看似关联十分紧密,但是彼此间又不能拥有太强的相依性,否则就会失去我们采用MVC的初衷,因此M、V、C彼此之间的关系必须恰到好处。

 

Controller与View之间的独立性

  从前面的内容可以发现,Controller跟View与Model都有关联性,彼此之间维持着一种信任关系,称之为“Convention(常规)”。

  在大部分的Controller定义中,通常不会明确指定要显示哪张View,而是由MVC Framework依据常规帮你选出相关的View来显示,这就是Controller与View之间的独立性。

换句话说,当View尚未被建构时,Controller其实可以先撰写程序。相对来说,View与Controller的关系,大多是由Controller主动去挑选适合的View来显示,所以,View本身对于“输出”的任务来说,是处于一个非常独立的状态。因此,当Controller尚未被构建时,View也可以先撰写程序。

 

View与Model之间的独立性

  View大多参考自Model里所定义的型别,但这并非绝对必要的。View不需要Model也能够运行,只是这样View就会缺乏Model所能提供的数据型别定义。这会造成View在开发时没有那么方便。

 

Model与Controller之间的独立性

  Model是贯穿全局的重要角色。有趣的是,在没有Model的情况下,Controller与View一样可以运行得很好。例如,我们在显示“静态页面”时,没有任何动态数据的情况下,Controller不需要从Model取得数据,彼此之间当然就没什么关系了。

  

谈谈MVC——MVC初印象

标签:

原文地址:http://www.cnblogs.com/johnvwan/p/4540167.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!