MVC 是一种将应用程序划分为模型、视图、控制器三部分的软件架构模式。模型负责数据与业务逻辑,视图负责界面展示,控制器负责接收输入并协调二者,从而实现界面与逻辑的分离,便于分工协作与独立演化。

| 英文名 | Model-View-Controller |
| 提出者 | 特吕格弗·雷恩斯考 |
| 提出时间 | 1979 年 |
| 类型 | 架构模式 |
| 典型框架 | Rails、Spring MVC、Django |
MVC 模式(Model-View-Controller,模型-视图-控制器)是一种经典的软件架构模式,它把应用程序拆分为三个各司其职的部分:模型(Model)承载数据与业务规则,视图(View)负责呈现界面,控制器(Controller)接收用户输入并调度模型与视图。
MVC 最早由挪威计算机科学家特吕格弗·雷恩斯考(Trygve Reenskaug)于 1979 年在施乐帕克研究中心(Xerox PARC)为 Smalltalk 语言环境提出,是最早系统化解决图形界面程序结构问题的模式之一。此后它被广泛移植到桌面与 Web 开发领域,Ruby on Rails、Spring MVC、Django(变体 MTV)、ASP.NET MVC 等主流框架都以它为核心组织方式。
三者的关键在于依赖方向:视图和控制器依赖模型,而模型不依赖界面层,因此业务逻辑可以脱离界面独立测试与复用。
MVC 适用于界面与业务逻辑都较复杂、需要多人分工的应用。在 Web 开发中,典型流程是:路由把 HTTP 请求交给控制器,控制器调用模型完成数据库读写,再把结果交给模板引擎渲染视图返回浏览器。桌面与移动开发中,MVC 也演化出 MVP、MVVM 等变体,以适应不同的界面绑定机制。
问:MVC 与 MVVM 有何区别?答:MVVM 用视图模型(ViewModel)和数据绑定取代了控制器的手工协调,视图与状态通过绑定自动同步,更适合前端框架;MVC 中控制器需要显式地更新视图或选择视图。
问:控制器越写越臃肿怎么办?答:这是常见的胖控制器问题,应把业务规则下沉到模型或服务层,控制器只保留参数校验、调度和结果组装等薄薄一层职责。

| 英文名 | Model-View-Controller |
| 提出者 | 特吕格弗·雷恩斯考 |
| 提出时间 | 1979 年 |
| 类型 | 架构模式 |
| 典型框架 | Rails、Spring MVC、Django |
登录 后参与讨论
暂无讨论,来发表第一条评论吧