返回顶部
首页 > 资讯 > 精选 >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://lsjlt.com/news/306620.html(转载时请注明来源链接)

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

猜你喜欢
  • 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
  • MVC分层架构是怎么样的
    这篇文章给大家分享的是有关MVC分层架构是怎么样的的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。传统MVC三层架构通常,我们习惯的业务建模方式是围绕数据表的,先根据业务需要设计数据库,再完成业务流程的开发。在实现...
    99+
    2023-06-05
  • Python中下划线的含义是什么
    这篇文章给大家介绍Python中下划线的含义是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。格式例子作用及含义单下划线开头_var仅供内部使用,通常不会有python解释器强制执行末尾单下划线var_单个末尾下划线...
    99+
    2023-06-26
  • es6解构的含义是什么
    这篇文章主要讲解了“es6解构的含义是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“es6解构的含义是什么”吧! 在es6中...
    99+
    2024-04-02
  • MySQL执行计划中的各个参数及含义是什么
    本篇文章给大家分享的是有关MySQL执行计划中的各个参数及含义是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧...
    99+
    2024-04-02
  • MVC模型、视图、控制器的含义是什么
    本篇内容主要讲解“MVC模型、视图、控制器的含义是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“MVC模型、视图、控制器的含义是什么”吧!模型模型,表示知识。它既可能是一个对象(当然,如果仅...
    99+
    2023-06-17
  • MySQL执行计划中的各个参数及含义指的是什么
    这期内容当中小编将会给大家带来有关MySQL执行计划中的各个参数及含义指的是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。查看执行计划可以使用explain + SQ...
    99+
    2024-04-02
  • 三层架构和MVC的区别是什么
    本篇内容主要讲解“三层架构和MVC的区别是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“三层架构和MVC的区别是什么”吧!三层架构:1:数据访问层:主要是对...
    99+
    2024-04-02
  • PL/SQL的含义及其PL/SQL的体系结构是什么
    PL/SQL的含义及其PL/SQL的体系结构是什么?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一:什么是PL/SQL?PL/SQL是Or...
    99+
    2024-04-02
  • linux中分区的含义是什么
    本篇内容介绍了“linux中分区的含义是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!在linux中,分区就是把一片空间分割成多块,是指...
    99+
    2023-06-29
  • Cassandra中切分的含义是什么
    在Cassandra中,切分(sharding)是指将数据分布到多个节点或分区中的过程。切分通常用于水平扩展数据库系统,以提高性能和...
    99+
    2024-04-02
  • JavaScript中.?、??、??=的用法及含义是什么
    今天小编给大家分享一下JavaScript中.、、=的用法及含义是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。可选链(...
    99+
    2023-06-29
  • vue中$的含义及用法是什么
    这篇文章主要讲解了“vue中$的含义及用法是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“vue中$的含义及用法是什么”吧!这些只是Vue的命名规则,为了区分普通变量属性,避免我们自己声...
    99+
    2023-07-06
  • 静态IP的含义及作用是什么
    本篇内容介绍了“静态IP的含义及作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我相信很多经常上网的伙伴都不知道IP地址,但也有不太...
    99+
    2023-06-20
  • python多态的含义及优点是什么
    多态是面向对象编程中的一个概念,指的是同一种行为具有多种不同的表现形式。在Python中,多态可以通过方法重写和方法重载来实现。 优...
    99+
    2023-10-25
    python
  • HTML的标签有哪些及含义是什么
    今天小编给大家分享一下HTML的标签有哪些及含义是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了...
    99+
    2024-04-02
  • CSS的单位有哪些及含义是什么
    本篇内容介绍了“CSS的单位有哪些及含义是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 尺寸 ...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作