mvc三大要素

MVC是模型(Model)、视图(View)、控制器(Controller)3个单词的缩写。 下面我们从这3个方面来讲解MVC中的三个要素。

  • Model是指数据模型,是对客观事物的抽象。 如一篇博客文章,我们可能会以一个Post类来表示,那么,这个Post类就是数据对象。 同时,博客文章还有一些业务逻辑,如发布、回收、评论等,这一般表现为类的方法,这也是model的内容和范畴。 对于Model,主要是数据、业务逻辑和业务规则。相对而言,这是MVC中比较稳定的部分,一般成品后不会改变。 开发初期的最重要任务,主要也是实现Model的部分。这一部分写得好,后面就可以改得少,开发起来就快。
  • View是指视图,也就是呈现给用户的一个界面,是model的具体表现形式,也是收集用户输入的地方。 如你在某个博客上看到的某一篇文章,就是某个Post类的表现形式。 View的目的在于提供与用户交互的界面。换句话说,对于用户而言,只有View是可见的、可操作的。 事实上也是如此,你不会让用户看到Model,更不会让他直接操作Model。 你只会让用户看到你想让他看的内容。 这就是View要做的事,他往往是MVC中变化频繁的部分,也是客户经常要求改来改去的地方。 今天你可能会以一种形式来展示你的博文,明天可能就变成别的表现形式了。
  • Contorller指的是控制器,主要负责与model和view打交道。 换句话说,model和view之间一般不直接打交道,他们老死不相往来。view中不会对model作任何操作, model不会输出任何用于表现的东西,如HTML代码等。这俩甩手不干了,那总得有人来干吧,只能Controller上了。 Contorller用于决定使用哪些Model,对Model执行什么操作,为视图准备哪些数据,是MVC中沟通的桥梁。
  • 对于MVC中三者的划分并没有十分明晰的定义和界线。MVC设计模式只是一种指导思想, 让你按照model, view, controller三个方面来描述你的应用,并通过三者的交互,使应用功能得以正常运转。

    其中,View的部分比较明确,就是负责显示嘛。一切与显示界面无关的东西,都不应该出现在View里面。 因此,View中一般不会出现复杂的判断语句,不会出现复杂的运算过程。 对于PHP的Web应用而言,毫无疑问,HTML是View中的主要内容。这是关于View的几个原则:

    • 负责显示界面,以HTML为主;
    • 一般没有复杂的判断语句或运算过程,可以有简单的循环语句、格式化语句。 比如,一般博客首页的文章列表,就是一种循环结构;
    • 从不调用Model的写方法。也就是说,View只从Model获取数据,而不直接改写Model,所以我们说他们老死不相往来。
    • 一般没有任何准备数据的代码,如查询数据库、组合成一定格式的字符串等。 这些一般放在Controller里面,并以变量的形式传给视图。 也就是说,视图里面要用到的数据,都是拿来就能直接用的变量。

    对于Model而言,最主要就是保存事物的信息,表征事物的行为和对他可以进行的操作。 比如,Post类必然有一个用于保存博客文章标题的title属性,必然有一个删除的操作,这都是Model的内容。 以下是关于Model的几个原则:

    • 数据、行为、方法是Model的主要内容;
    • 实际工作中,Model是MVC中代码量最大,逻辑最复杂的地方,因为关于应用的大量的业务逻辑也要在这里面表示。
    • Model所提供的数据都是原始数据。也就是说,不带有任何表现层的代码。 比如,一般不会在输出的数据中添加HTML标签,这是View的工作。 但是Model可以提供有结构的数据,数组结构、队列结构、乃至其他Model等。 这个结构并非是表现层的格式,而是数据在内存中的表现。
    • 与输出不同,Model的输入数据,可以是带有表现格式的数据。 如将一篇文章保存到Post里面,内容中必然包含各种HTML标签。 因此,Model一般要对输入数据作过滤、验证和规范化等预处理。 特别是对于需要保存进数据库的,一定要对所有的输入数据作预处理。 这些预处理,有的其实是业务逻辑。比如只有主编才可以删除文章,这一验证规则既也是业务逻辑,也是权限控制。 而有些预处理,则不属于业务逻辑,比如,文章标题前后的空格应去除。
    • 注意与Controller区分开。Model是处理业务方面的逻辑,Controller只是简单的协调Model和View之间的关系, 只要是与业务有关的,就该放在Model里面。好的设计,应当是胖Model,瘦Controller。

    对于Controller,主要是响应用户请求,决定使用什么视图,需要准备什么数据用来显示。 以下是有关Controller的设计原则:

    • 用于处理用户请求。 因此,对于reqeust的访问代码应该放在Controller里面,比如 $_GET $_POST 等。 但仅限于获取用户请求数据,不应该对数据有任何操作或预处理,这些工作应该交由Models来完成。
    • 调用Models的读方法,获取数据,直接传递给视图,供显示。 当涉及到多个Model时,有关的逻辑应当交给Model来完成。
    • 调用Models的类方法,对Models进行写操作。
    • 调用视图渲染函数等,形成对用户Reqeust的Response。

原文地址:https://www.cnblogs.com/wjr2018/p/10410337.html

时间: 2024-10-08 21:37:32

mvc三大要素的相关文章

操盘策略:把握三大要素 摆脱股市隐忧

操盘策略:把握三大要素 摆脱股市隐忧 字体: 大 小 换肤: 收藏 2015-03-03 13:56:02 从理论上讲,股市是优化资源配置.价值合理发现的场所,但由于参与者众多.偏好不同.价值投资者与价格博弈者共存,股价的波动并非简单以估值高低可以预测.股价涨跌往往以预期的改变为先导,把握好这一点,投资者大多可以获得价差收益.然而,预期又不能过于脱离现实,过度预期会使价格远离价值,最终带来灾难性的后果. 我国资本市场发展历史相对较短,无论投资者还是管理者在风险控制方面往往容易犯矫枉过正的毛病.2

4星|《为何要提升员工的幸福感》:幸福感最高的三大要素是:感恩的习惯、开放的心态,从错误中学习的能力,以及拥有自己的人生意义

<哈佛商业评论>的4篇文章.不确定是不是以前的旧文集结出版还是新写/译的. 有一些针对幸福感的调研数据,篇幅虽小但是这样的数据还是比较有意义的.书中一个重要的信息是:幸福感最高的三大要素是:感恩的习惯.开放的心态,从错误中学习的能力,以及拥有自己的人生意义. 以下是书中一些内容的摘抄,#号后面是kindle电子书中的页码: 1:最近的研究发现,很少有经历能对我们产生超过3个月的影响.当好事来临时,我们会庆祝一阵,然后冷静下来.当坏事来临时,我们会哀嚎一阵,然后振作起来并接受现实.#68 2:我

物质、能量、信息:自然界的三大要素

控制论的创始人维纳认为:信息就是信息,不是物质也不是能量.也就是说,信息与物质.能量是有区别的.同时,信息与物质.能量之间也存在着密切的关系.物质.能量.信息是构成现实世界的三大要素. 只要事物之间的相互联系和相互作用的存在,就有信息发生.人类社会的一切活动都离不开信息,信息早就存在于客观世界,只不过人们首先认识了物质,然后认识了能量,最后才认识了信息. 信息具有使用价值,能够满足人们的特殊需要,可以用来为社会服务.但是,认识到信息是一种独立的资源还是20世纪80年代以来的事情. 美国哈佛大学的

仿 MVC 三大特性

1.先做个小例子 特性,只能通过反射实现 我们自定义一个特性 public class CustomAttribute : Attribute { public int Id; public string Name; public string Reamrk; public string Desc; public CustomAttribute() : this(0, "") { }//如果没传参,使用this给默认值 public CustomAttribute(int _id, s

程序猿的三大要素:

1.纠错能力 2.自学能力 3.协作能力

企业成功应用CRM的三大要素

企业常常会因为对现有系统的不满而考虑采用CRM客户关系管理系统,但根据一份客户调查结果显示,超过50%的CRM客户关系管理系统最初都没有经过周密的组织部署,只有少数行业例外.很多企业由于缺乏资金.组织或兴趣,不得不采用渐进式地.自下而上的"游击式"CRM系统.近几年内,成功的CRM战略已经逐渐克服组织.渠道.价格.产品和技术的障碍,成为极具价值的客户管理系统.但是,这还是需要依赖于IT经理是否对将要进行的CRM项目管理做战略计划.这里罗浮云(计算)软件为大家介绍三种方法来推动CRM项目

数往知来 ASP.NET MVC HtmlHelper、MVC快速增删改查 Cache MVC3客户端验证 MVC隐式异步提交 &lt;二十八&gt;

一.HtmlHelper.MVC快速增删改查 MVC 在MVC里面请求首先到控制器-->然后 -->数据库数据放在APP_DATE文件夹里, -->js.css文件放在content文件夹里 -->控制器放在Controllers里,控制器要以controller结尾 控制器下面的所有方法都称为action 2)webform跟 aspnet MVC:区别请求的地址不一样了 MVC请求的是控制器下面的action webform:aspx页面或者是一般处理程序 -->a标签

&lt;转&gt;ASP.NET学习笔记之理解MVC底层运行机制

ASP.NET MVC架构与实战系列之一:理解MVC底层运行机制 今天,我将开启一个崭新的话题:ASP.NET MVC框架的探讨.首先,我们回顾一下ASP.NET Web Form技术与ASP.NET MVC的异同点,并展示各自在Web领域的优劣点.在讨论之前,我对这两种技术都非常热衷,我个人觉得在实际的项目开发中,两者都能让我们受益匪浅,因此是目前Web领域两大平行和流行的技术.我们都知道,在传统的ASP.NET Web Form应用程序中,Microsoft已为我们设计了较为完整.简洁的开发

MVC特性

MVC与ASP.NET MVC基础概念 MVC是Model-View-Controller的缩写. MVC将应用程序划分为3大组件:模型\视图\控制器. MVC不是ASP.NET所特有,它只是一种开发理念.java中的struts2也是一种MVC模型. ASP.NET MVC从2008年发布1.0版以来,截至2014年ASP.NET MVC最新版本已经是5.0. ASP.NET MVC从1.0版开始,就已经开放源代码(源码地址:aspnetwebstack.codeplex.com). ASP.