题目:请简述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 的辨别能力。
知识点拆解:
用户请求 → Controller(解析、校验)→ Model(业务处理、持久化)→ Controller(组装响应数据)→ View(渲染)→ 用户按「职责定义 → 数据流向 → 设计思想」递进。
考察方向:
延伸递进面试题:
面试官您好,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 的价值不在于套用模式,而在于让每一层职责清晰、可独立测试、可独立演进。