【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等改进模式。
相关推荐
William_cl15 小时前
【C# OOP 入门到精通】从基础概念到 MVC 实战(含 SOLID 原则与完整代码)
开发语言·c#·mvc
William_cl3 天前
一、前置基础(MVC学习前提)_核心特性_【C# 泛型入门】为什么说 List<T>是程序员的 “万能收纳盒“?避坑指南在此
学习·c#·mvc
程序员小凯4 天前
Spring MVC 分布式事务与数据一致性教程
分布式·spring·mvc
艾菜籽4 天前
SpringMVC练习:加法计算器与登录
java·spring boot·spring·mvc
程序员小凯4 天前
Spring MVC 多租户架构与数据隔离教程
spring·架构·mvc
艾菜籽5 天前
Spring Web MVC入门补充1
java·后端·spring·mvc
艾菜籽5 天前
Spring MVC入门补充2
java·spring·mvc
风兮w5 天前
MVC、MVP和MVVM的区别
mvc
蓝天智能6 天前
QT MVC中Model的特点及使用注意事项
qt·mvc
低音钢琴6 天前
【SpringBoot从初学者到专家的成长15】MVC、Spring MVC与Spring Boot:理解其差异与联系
spring boot·spring·mvc