05 MVC 模式

article/2025/10/19 13:31:57

MVC 模式

一、概述

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

二、分析

1、组成结构

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

  • 模型Model
    用于封装与应用程序的业务逻辑相关的数据以及对数据的处理方法。“ Model ”有对数据直接访问的权力,例如对数据库的访问。“Model” 不依赖 “View” 和 “Controller”,也就是说, Model 不关心它会被如何显示或是如何被操作。但是 Model 中数据的变化一般会通过一种刷新机制被公布。为了实现这种机制,那些用于监视此 Model 的 View 必须事先在此 Model 上注册,从而,View 可以了解在数据 Model 上发生的改变。(比如:观察者模式)
  • 视图View
    能够实现数据有目的的显示(理论上,这不是必需的)。在 View 中一般没有程序上的逻辑。为了实现 View 上的刷新功能,View 需要访问它监视的数据模型(Model),因此应该事先在被它监视的数据那里注册
  • 控制器Controller
    起到不同层面间的组织作用,负责转发请求,对请求进行处理,用于控制应用程序的流程。它处理事件并作出响应,“事件”包括用户的行为和数据 Model 上的改变。
    控制器作用于模型和视图上。它控制数据流向模型对象,并在数据变化时更新视图。它使视图与模型分离开。

2、优缺点

优点

  • 耦合性低,界面与逻辑分开
  • 复用性高,MVC 模式允许使用不同的视图来访问同同一份数据(Model),即多个视图能共享一个模型,例如:同一份网络数据,既可以使用 WEB(HTTP)浏览器 也可以 无线浏览器(wap)来展示。
  • 易拓展,可轻松增加新模块,各模块互相独立

缺点

  • 引进更多的类,增加实现成本

三、代码实现

  • 实现一
    源码:https://github.com/WarZhan/DesignPatterns/tree/master/MVCPattern
  • 实现二
/** 模拟 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;

四、UML 图

在这里插入图片描述

MVC 模式

参考资料
[1] MVC :https://zh.wikipedia.org/wiki/MVC
[2] MVC :https://en.wikipedia.org/wiki/Model%E2%80%93view%E2%80%93controller
[3] MVC 模式:https://www.runoob.com/design-pattern/mvc-pattern.html

欢迎关注个人公众号,实时推送最新博文!
在这里插入图片描述


http://chatgpt.dhexx.cn/article/YWISCS8F.shtml

相关文章

MVC5 + EF6 入门完整教程二

从前端的UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分。 ASP.NET MVC抛弃了WebForm的一些特有的习惯,例如服务器端控件,ViewState这些东西,让Web回…

ASP.NET + MVC5 入门完整教程七 -—-- MVC基本工具(上)

这里主要介绍三类工具之一的 依赖项注入(DI)容器,其他两类 单元测试框架和模仿工具以后介绍。 1、准备示例项目 从创建一个简单的示例开始,名称为"EssentialTools" ,使用MVC空模板,如下所示: 创…

ASP.NET MVC 5 开发框架简介

1、新建项目 2、选择MVC模板 3、MVC框架简介 (1)App_Data: 该文件夹主要是包含应用程序的本地存储, 它通常以文件形式(如Microsoft SQL Server数据库文件, XML文件等)包含数据存储。 (2)App_Start: 该文件夹包含应用程序的配置逻…

asp.net mvc5 安装

原文地址 http://docs.nuget.org/docs/start-here/using-the-package-manager-console 工具-->NuGet程序包管理器-->程序包管理器控制台 然后 PM>Install-Package Microsoft.AspNet.Mvc -Version 5.0.0 Finding a Package From the Tools menu, select Library Pa…

MVC5 + EF6 入门完整教程

第0课 从0开始 ASP.NET MVC开发模式和传统的WebForm开发模式相比,增加了很多"约定"。 直接讲这些 "约定" 会让人困惑,而且东西太多容易忘记。 和微软官方教程不同,笔者尽量不用脚手架,从空白框架开始&…

ASP.NET + MVC5 入门完整教程二

从前端UI开始 MVC分离的比较好,开发顺序没有特别要求,先开发哪一部分都可以,这次我们主要讲解前端UI的部分。而谈到一个Web Application的UI,涉及到的无非就是html、css、 js这些东西。有兴趣的同学可以看看EsayUI。 任务 建立 注…

asp.net + MVC5 入门完整教程一

第1课 从0开始 从空白框架开始,一步一步添加功能,让大家能真正能用起来,理解每一个过程。 概述 本系列文章及文章中的例子主要基于微软官方文档 使用工具 : VS2014 sqlServer 2014 开始主要讲解MVC使用,后续同样也会提供MVC A…

ASP.NET + MVC5 入门完整教程三 (上) ---第一个MVC项目

第一个MVC应用程序 1创建MVC项目 打开VS ,File--新建--项目,选择ASP Web项目,命名后确认。选择(Empty)空模板, 项目创建完成,会看到 解决方案管理器 窗口显示一些文件夹,如图&…

ASP.net MVC5 简介

ASP.net MVC5 简介 MVC是什么 MVC是一种设计模式。 也就是Model-View-Controller 模型-视图-控制器。 Model的功能 Model试数据模型,用来封装与程序相关的数据,以及对数据操作的处理方法。 有关“数据处理”的范围都可以属于Model,比如…

ASP.NET MVC5 网站开发实践 - 概述

前段时间一直在用MVC4写个网站开发的demo,由于刚开始学所有的代码都写在一个项目中,越写越混乱,到后来有些代码自己都理不清了。1月26日晚上在群里跟怒放 他们讨论这个问题,结论是即使只是一个小demo也应该分层来写。正好看到别人…

MVC5路由系统机制详细讲解

转自:http://www.lanhusoft.com/Article/213.html 请求一个ASP.NET mvc的网站和以前的web form是有区别的,ASP.NET MVC框架内部给我们提供了路由机制,当IIS接受到一个请求时,会先看是否请求了一个静态资源(.html,css,…

基于用户 的协同过滤算法

计算用户相似度和用户对未知物品的可能评分 基于用户的协同过滤算法主要包括两个步骤。 (1) 找到和目标用户兴趣相似的用户集合。 (2) 找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。 例如现在有A、B、C、D四个用户,分别对a、…

JAVA开源协同过滤算法,推荐算法:协同过滤算法的介绍

一、什么是推荐算法 互联网的出现和普及给用户带来了大量的信息,满足了用户在信息时代对信息的需求,但随着网络的迅速发展而 带来的网上信息量的大幅增长,使得用户在面对大量信息时无法从中获得对自己真正有用的那部分信息,对信息…

协同过滤算法实验

本次呢,简单介绍一下协同过滤算法,并且给出简单的电影推荐实验作为举例说明。利用Spark MLlib中的协同过滤算法完成针对特定用户的电影推荐功能。这一部分需要实现实现输入用户id,输出为其推荐的电影。 一、协同过滤 所谓协同过滤&#xff0…

协同过滤算法及python实现

协同过滤算法及python实现 1.算法简介 协同过滤算法是一种较为著名和常用的推荐算法,它基于对用户历史行为数据的挖掘发现用户的喜好偏向,并预测用户可能喜好的产品进行推荐。也就是常见的“猜你喜欢”,和“购买了该商品的人也喜欢”等功能。…

协同过滤算法理论

1. 协同过滤算法 协同过滤(Collaborative Filtering)推荐算法是最经典、最常用的推荐算法。 所谓协同过滤,基本思想是根据用户之前的喜好以及其他兴趣相近的用户的选择来给用户推荐物品(基于对用户历史行为数据的挖掘发现用户的喜好偏向&…

协同过滤算法实战

简介 公司给了一个任务,要求根据相似度匹配给教师推荐课程。正好复(预)习一下协同过滤算法。直接探索一下协同过滤应用。 目前教师档案大数据系统中存有海量的教师数据,这些数据对于教师的未来决策,预测教师发展路径,推荐教师课…

协同过滤算法(例题理解)

协同过滤算法是一种推荐系统算法,它利用用户对物品的评价数据来预测用户对未评价物品的喜好程度。该算法基于一个简单的思想:如果两个用户在过去对某些物品的评价很相似,那么在未来他们对这些物品的评价也很可能相似。因此,协同过…

python实现协同过滤算法

协同过滤算法常用于商品推荐或者类似的场合,根据用户之间或商品之间的相似性进行精准推荐 协同过滤算法分为: 基于用户的协同过滤算法(UserCF算法)(适合社交化应用)基于商品的协同过滤算法(It…

java 协同过滤算法_推荐系统中协同过滤算法实现分析

最近研究Mahout比较多,特别是里面协同过滤算法;于是把协同过滤算法的这个实现思路与数据流程,总结了一下,以便以后对系统做优化时,有个清晰的思路,这样才能知道该如何优化且优化后数据亦能正确。 推荐中的协…