首页 > 其他分享 >MVC简介

MVC简介

时间:2022-10-07 17:45:12浏览次数:80  
标签:简介 模式 Framework Controller MVC Model View

MVC简介


简介

MVC模式(Model–view–controller)是软件工程中的一种软件架构模式,把软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)。

MVC模式最早由Trygve Reenskaug在1978年提出,是施乐帕罗奥多研究中心(Xerox PARC)在20世纪80年代为程序语言Smalltalk发明的一种软件架构。MVC模式的目的是实现一种动态的程式设计,使后续对程序的修改和扩展简化,并且使程序某一部分的重复利用成为可能。除此之外,此模式透过对复杂度的简化,使程序结构更加直观。软件系统透过对自身基本部分分离的同时也赋予了各个基本部分应有的功能。专业人员可以依据自身的专长分组:

 *模型(Model) - 程序员编写程序应有的功能(实现算法等等)、数据库专家进行数据管理和数据库设计(可以实    现具体的功能)。
 *视图(View) - 界面设计人员进行图形界面设计。
 *控制器(Controller)- 负责转发请求,对请求进行处理。

组件的互动

将应用程序划分为三种组件,模型 - 视图 - 控制器(MVC)设计定义它们之间的相互作用。

  • 模型(Model) 用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“ Model ”有对数据直接访问的权力,例如对数据库的访问。“Model”不依赖“View”和“Controller”,也就是说, Model 不关心它会被如何显示或是如何被操作。但是 Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model 上注册,从而,View 可以了解在数据 Model 上发生的改变。(比如:观察者模式

  • 视图(View)能够实现数据有目的的显示(理论上,这不是必需的)。在 View 中一般没有程序上的逻辑。为了实现 View 上的刷新功能,View 需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册。

  • 控制器(Controller)起到不同层面间的组织作用,用于控制应用程序的流程。它处理事件并作出响应。“事件”包括用户的行为和数据 Model 上的改变。


优点

  • 在MVC设计模式中, Model 响应用户请求并返回响应数据,View 负责格式化数据并把它们呈现给用户,业务逻辑和表示层分离,同一个 Model 可以被不同的 View 重用,所以大大提高了代码的可重用性。

  • MVC模式的三个模块相互独立,改变其中一个不会影响其他两个,所以依据这种设计思想能构造良好的少互扰性的构件。

  • Controller(控制层) 提高了应用程序的灵活性和可配置性。


在实作上,MVC 模式的 Framework 通常会将 MVC 三个部份分离实作:

  • Model 负责资料存取,较现代的 Framework 都会建议使用独立的资料物件 (DTO, POCO, POJO 等) 来替代弱型别的集合物件。资料存取的程式码会使用 Data Access 的程式码或是 ORM-based Framework,也可以进一步使用 Repository Pattern 与 Unit of Works Pattern 来切割资料来源的相依性。

  • Controller 负责处理讯息,较高阶的 Framework 会有一个预设的实作来作为 Controller 的基础,例如 Spring 的 DispatcherServlet 或是 ASP.NET MVC 的 Controller 等,在职责分离原则的基础上,每个 Controller 负责的部份不同,因此会将各个 Controller 切割成不同的档案以利维护。

  • View 负责显示资料,这个部份多为前端应用,而 Controller 会有一个机制将处理的结果 (可能是 Model, 集合或是状态等) 交给 View,然后由 View 来决定怎么显示。例如 Spring Framework 使用 JSP 或相应技术,ASP.NET MVC 则使用 Razor 处理资料的显示。


实际范例

这里有一个通过 JavaScript 所实现的基于 MVC 模型,需要注意的是:MVC 不是一种技术,而是一种理念。

/** 模拟 Model, View, Controller */
var M = {}, V = {}, C = {};
 
/** Model 负责存放资料 */
M.data = "hello world";
 
/** View 负责将资料输出给用户 */
V.render = (M) => { alert(M.data); }
 
/** Controller 作为连接 M 和 V 的桥梁 */
C.handleOnload = () => { V.render(M); }
 
/** 在网页读取的时候呼叫 Controller */
window.onload = C.handleOnload;

在这个简短的程序中就是一个完整的 MVC 模式。

标签:简介,模式,Framework,Controller,MVC,Model,View
From: https://www.cnblogs.com/xiaofenga/p/16760155.html

相关文章

  • MVC显示DATATABLE
    @{ViewBag.Title="ShowDataTable";}@usingSystem.Data;@modelModels.ConModel@{vartable=Model.ExcelTableasDataTable;}<scriptsrc="~/Scripts/My97D......
  • JSP——简介-快速入门
    JSP简介    JSP快速入门    <%@pagecontentType="text/html;charset=UTF-8"language="java"%><html><head><title>Title</title></head><bod......
  • 【中国大学生计算机大赛二等奖】智能中医-中e诊简介(一)
    1系列文章导航系列文章2​​【Python】计算机视觉手掌图片穴位识别(二)​​系列文章3​​【python-Unet】计算机视觉舌象舌头图片分割机器学习(三)​​系列文章4​​【pyth......
  • 2.1 os模块简介_路径操作
    #os模块简介  ##os模块     ###Python标准库      ###和操作系统有关的操作      ###创建、移动、复制文件和文件夹     ......
  • SpringMVC之异常处理机制
    SpringBoot异常处理机制默认异常处理机制springboot默认提供了一个处理/error的handler,全局异常处理。对于机器客户端来说,产生JSON(具体的错误)、状态码和异常信息;对于......
  • Spring-MVC原理
        DispactherServletDispactherServlet为整个SpringMVC的控制中心,用于接收拦截用于的请求原理1.浏览器向服务器发送请求,DispactherServlet拦截请求并调用处......
  • InnoDB关于事务、锁、MVCC专题
    目录并发所带来的的问题脏写脏读不可重复读幻读事务事务的特性事务的四种隔离级别锁为什么要加锁InnoDB的七种锁不同事务RR和RC......
  • SpringMVC之内容协商策略
    内容协商原理目录内容协商原理一、引言二、正常请求请求数据格式确定和返回值数据格式确定三、内容协商确定客户端接收数据格式默认基于请求头确定请求数据格式确定服务端......
  • 01爬虫简介
    01爬虫简介1.jupyter安装与打开简介:jupyter是一个交互式笔记本,是一个基于web页面的开发工具,集成了数据分析和机器学习开发环境。用途:学习、笔记共享,探索,开发数据分......
  • SpringBoot简介入门
                   ......