← 每日面试题 学习看板

请简述MVC模式的思想

面试题/02架构设计题/09设计模式/请简述MVC模式的思想.md

面试记录 2026-10-08

题目:请简述MVC模式的思想

难度:medium(标签标注)

标签:arch/design-pattern, architecture/design, difficulty/medium

评分:⭐⭐⭐☆☆(3/5)

我的回答

MVC 是最我们最常用的一个模式,它主要是用来进行分层设计,将整个项目划分成几个层次,对外展现,然后业务设计跟自定义处理。对外展现方面,通过 Web HTML 给外部展现出相应的内容。MVC 很久以前最早接触的其实是分层,通过 Spring MVC 去进行的。它通过 Controller 然后去进行控制,然后通过设计 Model 去进行模型的设计。通过 Web 去展现数据。这就是一个标准的 MVC,将整个项目划分成几个层次,展现、控制、设计,分别进行,分别管控自己相应的事情,将项目进行很好的分隔,也更好的管控跟开发,在不同的阶段去做不同的事。

点评

优点:抓住分层设计和关注点分离的核心;能对应到 Spring MVC 实践;三个组件都能列出。

不足:三个组件职责描述模糊(Model 被说成"模型设计"、View 局限于 HTML);没讲清数据流向(Controller 是桥梁);没提核心思想"关注点分离";未涉及 MVC/MVP/MVVM 变体。

补充:标准数据流 用户→Controller→Model→Controller→View→用户;变体对比 MVP(Presenter 替代 Controller)/MVVM(ViewModel 双向绑定);Spring MVC 落地:DispatcherServlet→Handler→Service/DAO→JSP/Thymeleaf。

完整讲解

第一部分:知识重点剖析

核心考点定位:考察对 MVC 三组件职责和数据流的清晰认知,以及 MVC 与 MVP/MVVM 的辨别能力。

知识点拆解:

  1. 三组件职责:
  1. 核心数据流:用户请求 → Controller(解析、校验)→ Model(业务处理、持久化)→ Controller(组装响应数据)→ View(渲染)→ 用户
  2. 核心思想:关注点分离(SoC)——UI 变化不影响业务、业务变化不影响 UI,各层独立演进
按「职责定义 → 数据流向 → 设计思想」递进。

第二部分:考察方向与延伸递进

考察方向:

延伸递进面试题:

  1. MVC、MVP、MVVM 有什么区别?各自适用场景是什么?
  1. Spring MVC 的完整请求处理流程是怎样的?
  1. 为什么现代前端框架普遍用 MVVM 而不是 MVC?

第三部分:面试者参考回答(300-600 字口语化)

面试官您好,MVC 是一种经典的分层架构模式,核心思想是关注点分离——把 UI、业务逻辑、数据持久化分成三层,各层独立演进。

三个组件职责很清晰:

数据流向是:用户 → Controller(解析校验)→ Model(业务处理)→ Controller(组装数据)→ View(渲染)→ 用户。

在 Spring MVC 里的落地是:浏览器请求 → DispatcherServlet(前端控制器)→ HandlerMapping 找到对应的 @Controller 方法 → 方法调用 Service/DAO(Model 层)→ 通过 ViewResolver 选择 JSP/Thymeleaf 渲染 → 返回响应。

MVC 有两个常见变体:

现代后端 API 一般不再严格用 MVC,而是用 Controller-Service-DAO 分层;前端 Vue/React 则普遍用 MVVM。MVC 的价值不在于套用模式,而在于让每一层职责清晰、可独立测试、可独立演进。