【MVC简介-产生原因、演变历史、核心思想、组成部分、使用场景】

MVC简介

产生原因:

MVC(Model-View-Controller)模式诞生于20世纪70年代,由Trygve Reenskaug在施乐帕克研究中心(Xerox PARC)为Smalltalk语言设计,目的是解决图形用户界面(GUI)开发中代码混乱 的问题。核心目标是将数据管理(Model)、界面展示(View)和用户交互逻辑(Controller)分离,提升代码的可维护性和复用性。

发展历史与演变:
  1. 1979年:首次在Smalltalk-80中实现,奠定基础概念。
  2. 1988年:《Design Patterns》一书将MVC列为经典模式,推动其普及。
  3. Web时代 :适配为MVC框架(如Struts、Ruby on Rails),后端处理逻辑,前端简化成模板。
  4. 现代演变
    • MVP/MVVM:针对前端复杂性衍生(如Android的MVP、Vue/React的MVVM)。
    • 微服务架构:Model层拆分为独立服务,Controller转为API网关。
核心思想:
  • 分离关注点
    • Model:数据与业务逻辑(如数据库操作)。
    • View:界面呈现(如HTML/UI组件)。
    • Controller:接收输入,协调Model和View(如路由处理)。
  • 松耦合:修改某一层时不影响其他层。
组成部分
Controller

控制器在不同的层面之间起着组织和管理作用,用于控制应用程序的流程,处理事件并做出响应。控制器做出的响应包括更新数据模型和选择视图解释数据模型。

控制器的具体作用如下:

  • 定义应用程序的行为和流程;
  • 响应用户动作,驱动模型改变;
  • 选择用于响应的视图。
View

视图用于有目的地显示数据(在理论上,这不是必需的)​。视图一般没有程序层面的逻辑,为了实现刷新功能,需要访问它所监视的数据模型,因此应该事先在它所监视的模型中注册监听事件。

视图的具体作用如下:

  • 解释模型;
  • 请求模型更新;
  • 发送用户动作到控制器。
Model

模型模型用于封装与应用程序的业务逻辑相关的数据及对数据的处理方法。它具有直接访问数据的权限,例如对数据库的访问。模型不依赖视图和控制器,即不关心被如何显示或者如何操作,但模型中的数据变化一般会通过某种刷新机制公布。为了实现这种刷新机制,用于监视相应模型的视图必须事先在相应模型上注册。

模型的具体作用如下:

  • 封装应用程序的状态;
  • 提供应用程序的功能;
  • 查询响应状态;
  • 通知视图改变。
使用场景:
  • Web开发:Spring MVC(Java)、Django(Python)。
  • 桌面应用:JavaFX、.NET WPF。
  • 移动端:iOS(UIKit)、Android(早期Activity结构)。
  • 前端框架:Angular、Ember.js(虽属MVVM,但受MVC启发)。
优缺点:
  • 优点:结构清晰、易于协作、可测试性强。
  • 缺点:小型项目可能过度设计,现代UI需结合MVVM等改进模式。
相关推荐
Penk是个码农16 小时前
web前端面试-- MVC、MVP、MVVM 架构模式对比
前端·面试·mvc
圆滚滚肉肉3 天前
后端MVC(控制器与动作方法的关系)
后端·c#·asp.net·mvc
ajassi20003 天前
开源 C# .net mvc 开发(六)发送邮件、定时以及CMD编程
linux·开源·c#·mvc
blackA_12 天前
JavaWeb学习——day8(MVC模式与session、cookie)
学习·mvc
PHASELESS41114 天前
深入理解Spring MVC:构建灵活Web应用的基石
java·网络·后端·spring·mvc
王有品16 天前
Spring MVC 会话管理实践教程:HttpSession 深入应用
java·spring·mvc
lwb_011816 天前
Spring MVC参数绑定终极手册:单&多参对象集合JSON文件上传精讲
spring·json·mvc
我的炸串拌饼店17 天前
ASP.NET MVC 中SignalR实现实时进度通信的深度解析
后端·asp.net·mvc
CUIYD_198917 天前
Spring MVC 处理静态资源请求 - ResourceHandler
java·spring·mvc
武帝为此21 天前
【SpringMVC 入门介绍】
java·spring·mvc