【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等改进模式。
相关推荐
mqiqe34 分钟前
Spring MVC 页面跳转方案与区别
python·spring·mvc
2401_884810746 小时前
Spring-MVC笔记上(上)
笔记·spring·mvc
月之梦6 小时前
MVC编程
mvc
呦呦鹿鸣Rzh6 小时前
Spring MVC
java·spring·mvc
刀法如飞3 天前
Go语言架构实践:从 MVC 到 DDD 的演进之路
go·mvc·领域驱动设计
菲兹园长3 天前
Spring Web MVC(Spring MVC)
前端·spring·mvc
刀法如飞3 天前
Go后端架构探索:从 MVC 到 DDD 的演进之路
架构·go·mvc
2401_884810743 天前
Spring-MVC笔记(下)
笔记·spring·mvc
外面要下雨3 天前
来和大家聊个有意思的事情:在接口上标注@Component和@Controller有什么区别?
后端·spring·mvc