您的位置:首页 > 其它

对MVC的理解

2016-03-23 17:04 246 查看
MVC是三个单词的缩写:Model, View, Controller。 MVC是一种设计模式,目前几乎所有的Web开发框架都建立在MVC模式之上。MVC的意义在于指导开发者将数据与表现解耦,提高代码,特别是模型部分代码的复用性。

实际上,所有模式的存在都是为了代码复用,在前台页面的js或者后端PHP\java中都有很多采用MVC三层设计来组织代码的框架,设置对于CS的应用或者本地APP都包含这种思想。

下面的内容基本是摘录自:http://www.digpage.com/mvc.html,也加入了自己的理解和想法。

Model

Model是指数据模型,是对客观事物的抽象。 如一篇博客文章,我们可能会以一个Post类来表示,那么,这个Post类就是数据对象。 同时,博客文章还有一些业务逻辑,如发布、回收、评论等,这一般表现为类的方法,这也是model的内容和范畴。 对于Model,主要是数据、业务逻辑和业务规则。相对而言,这是MVC中比较稳定的部分,一般成品后不会改变。 开发初期的最重要任务,主要也是实现Model的部分。这一部分写得好,后面就可以改得少,开发起来就快。

Model的设计跟数据库是一对多的关系,一个Model对应多个数据库表,描述的是业务对象。识别业务对象的过程是开发工作中最核心也是最难的事情。

有这些经验:

- 属性私有,具有set和get函数

- 粒度根据业务逻辑来设计,保持怎样的粒度就看需要对属性进行怎样的操作

- 函数命名要易懂,Model里的函数非常多

- Model还会根据在不同场景下设计不同的字段或者字段的验证规则,这时候可以考虑使用继承的方式来适应不同的场景。

View

View是指视图,也就是呈现给用户的一个界面,是model的具体表现形式,也是收集用户输入的地方。 如你在某个博客上看到的某一篇文章,就是某个Post类的表现形式。 View的目的在于提供与用户交互的界面。换句话说,对于用户而言,只有View是可见的、可操作的。 事实上也是如此,你不会让用户看到Model,更不会让他直接操作Model。 你只会让用户看到你想让他看的内容。 这就是View要做的事,他往往是MVC中变化频繁的部分,也是客户经常要求改来改去的地方。 今天你可能会以一种形式来展示你的博文,明天可能就变成别的表现形式了。

在Yii框架里面,似乎是把整个业务对象都交给了View的渲染器,这属于一种前后端不严格分离的做法,但是的确是一种很便捷的做法。

一般没有任何准备数据的代码,如查询数据库、组合成一定格式的字符串等。 这些一般放在Controller里面,并以变量的形式传给视图。 也就是说,视图里面要用到的数据,都是拿来就能直接用的变量。

有这些经验:

- 页面经常出现的区域可以考虑做成小组件,譬如分页、下载、某个窗口等等…

- view中有的需要PHP框架来渲染,有的却是异步数据渲染,在设计初期就定下来,方便后面的统一。

Controller

Contorller指的是控制器,主要负责与model和view打交道。 换句话说,model和view之间一般不直接打交道,他们老死不相往来。view中不会对model作任何操作, model不会输出任何用于表现的东西,如HTML代码等。这俩甩手不干了,那总得有人来干吧,只能Controller上了。 Contorller用于决定使用哪些Model,对Model执行什么操作,为视图准备哪些数据,是MVC中沟通的桥梁。

有这些经验:

- 不处理各种参数,尽量不出现 if 语句

- 处理好用户验证、表单重复提交、数据输出、导航view这些工作就好

最后,从MVC三个单词的顺序来看,平时写代码也可以考虑按照这个顺序来写,先想好数据库设计,然后写好Model类,然后写好V,最后写C,写C的时候可以慢慢细化V和M间的关系,从而形成不同的功能点。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式