广告
返回顶部
首页 > 资讯 > 精选 >MVC架构的含义及职责划分是什么
  • 120
分享到

MVC架构的含义及职责划分是什么

2023-06-26 04:06:45 120人浏览 八月长安
摘要

这篇文章主要介绍“mvc架构的含义及职责划分是什么”,在日常操作中,相信很多人在MVC架构的含义及职责划分是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MVC架构的含义及职责划分是什么”的疑惑有所帮助!

这篇文章主要介绍“mvc架构的含义及职责划分是什么”,在日常操作中,相信很多人在MVC架构的含义及职责划分是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MVC架构的含义及职责划分是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

MVC架构的含义及职责划分是什么

1 到底什么是 MVC

模型-视图-控制器(MVC)是一种设计框架(设计模式)

MVC 的目标将业务逻辑从用户界面的考虑中分离

这样,开发者就可以更容易地改变每一部分而不会影响其他。

在 MVC 中,

  • Model 代表数据和业务规则

  • View 包含了用户界面元素,例如文本,表单等;

  • Controller 则管理模型和视图中的通信

MVC 在各种编程语言中均有实现,例如 J2EE 应用开发中,

View 可能由 jsp 实现;Controller 是一个 servlet,现在一般用 Struts 实现;Model 则是由一个实体 Bean 来实现。

2 我遇到了什么问题

Yii Framework 是一个流行的 PHP 框架,它借鉴了 Ruby on Rails 的 ActiveRecord(AR) 概念。

数据库中的每一个 table 都可以用 AR 类来方便地进行增删改查操作。

它把 AR 当做 Model,并推荐放在一个名为 models 的目录下面。

于是,我在自动生成表对应的 AR 之后,便望文生义想当然地认为已经拥有了 Model 层。

其实,AR只不过是 DAO (数据访问层),并不是 Model 层

我们的业务几乎全放在了 Controller 里:对用户提交上来的表单进行各种逻辑判断,进行计算,实例化 AR 对数据进行存储……

因为一个 Controller 中会有多个 action,每个 action 都有这样的业务处理。

最后,我发现我的 Controller 代码已经超过了 1000 行。

突然有一天,leader 说,我们这个系统要开放 api 给现有的旧系统调用,要给第三方接口。

第三方只是要给定一个参数,本系统给出个结果值而已,这其中的业务处理它是不关心的。

坏就坏在这里,Controller 已经实现了那些业务,但它是接受表单提交的,怎样能够也接受 SOAP 的 xml 文档呢?

Controller 和套套一样,应该越薄越好。

它的职责应该只是接受用户的输入,然后立刻转发给别的类来处理

这样 Controller 只负责提供不同的接口,我们才能算是将业务逻辑分离出去,而分离出去的业务也很容易进行重用。

分离出来的这部分业务由谁来处理呢?答案应该是 Model

3 View的职责

View部分比较明确,就是负责显示。

一切与显示界面无关的东西,都不应该出现在view里面。

因此,View 中一般不应该出现复杂的判断语句,以及复杂的运算过程。

可以有简单的循环语句、格式化语句。比如,博客首页的文字列表就是一种循环。

对于phpWEB应用而言,HTML是View中的主要内容

View应该从不调用Model的写方法

也就是说,View只从Model中读取数据,但不改写Model。

所以我们说,View和Model是老死不相往来的。

而且,View中不直接访问$_GET$_POST,应该由Controller传递给View。

此外,View一般没有任何准备数据处理的内容,如查询数据库等。

这些一般是放在Controller里面,并以变量的形式传给视图。

也就是说,视图里面要用到的数据,就是一个变量

4 Model的职责

对于Model而言,最主要就是保存和输出信息

比如,Post类必然有一个用于保存博客文章标题的title属性,必然有一个删除的操作,这都是Model的内容。

数据、行为、方法是Model的主要内容

实际工作中,Model是MVC中代码量最大

Model是逻辑最复杂的地方,因为应用的业务逻辑也要在这里表示。

注意将Model与Controller区分开。

Model是处理业务方面的逻辑,Controller只是简单的协调Model和View之间的关系。

只要是与业务有关的,就该放在Model里面。

数据校验、public常量和变量,都应该放在model层,

也就是说,有可能被重复使用的属性或方法,都应该放在model层,一次定义,到处使用。

Model不应该访问request、session以及其他环境数据,这些应该由Controller注入。

好的设计,应该是胖Model,瘦Controller

5 Controller的职责

对于Controller,主要是响应用户请求,决定使用什么视图,需要准备什么数据用来显示

因此,对于request的访问代码,应该放在Controller里面,比如$_GET$_POST等。

Controller应该仅限于获取用户请求数据,不应该对数据有任何操作或预处理,这应该放在 Model 里面。

对于数据的写操作,要调用Model类的方法完成。

对于用户请求的响应,要调用视图渲染。

此外,一般不要有HTML代码等其他表现层的东西,这应该是属于View的内容。

到此,关于“MVC架构的含义及职责划分是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

--结束END--

本文标题: MVC架构的含义及职责划分是什么

本文链接: https://www.lsjlt.com/news/306620.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MVC架构的含义及职责划分是什么
    这篇文章主要介绍“MVC架构的含义及职责划分是什么”,在日常操作中,相信很多人在MVC架构的含义及职责划分是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”MVC架构的含义及职责划分是什么”的疑惑有所帮助!...
    99+
    2023-06-26
  • LAMP架构的含义是什么
    LAMP架构是一种常见的Web应用程序架构,它由以下四个主要组件组成:1. Linux:作为操作系统,提供了稳定和安全的基础。2. ...
    99+
    2023-09-21
    LAMP
  • thinkphp5中MVC分层的含义是什么
    这篇文章主要介绍“thinkphp5中MVC分层的含义是什么”,在日常操作中,相信很多人在thinkphp5中MVC分层的含义是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”thinkphp5中MVC分层...
    99+
    2023-06-29
  • angular框架的含义及功能是什么
    Angular是一个基于TypeScript的开源前端框架,它主要用于构建单页应用(SPA)和动态Web应用。Angular的功能包...
    99+
    2023-10-25
    angular
  • MySQL执行计划中的各个参数及含义是什么
    本篇文章给大家分享的是有关MySQL执行计划中的各个参数及含义是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧...
    99+
    2022-10-18
  • MySQL执行计划中的各个参数及含义指的是什么
    这期内容当中小编将会给大家带来有关MySQL执行计划中的各个参数及含义指的是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。查看执行计划可以使用explain + SQ...
    99+
    2022-10-18
  • PL/SQL的含义及其PL/SQL的体系结构是什么
    PL/SQL的含义及其PL/SQL的体系结构是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一:什么是PL/SQL?PL/SQL是Or...
    99+
    2022-10-18
  • SAP R/3系统的R和3分别代表的含义以及负载均衡的实现原理是什么
    本篇文章给大家分享的是有关SAP R/3系统的R和3分别代表的含义以及负载均衡的实现原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1972年,SAP诞生,推出了RF系...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作