前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MVC VS MVVMM

MVC VS MVVMM

作者头像
Dylan Liu
发布2019-07-01 14:02:50
4870
发布2019-07-01 14:02:50
举报
文章被收录于专栏:dylanliu

摘 要

As a Javaer,I have used MVC pattern for a long time. Few days ago, I learned objective-c and developed an iOS application. There are many differences with backend Java web app. When using MVC pattern to seperate concerns, I felt that some inappropriate things was added into the view controller class. I found that they use MVVM frontend after some research。

MVC 模式

MVC 是 Model-View-Controller 的简写。刚开始做项目的时候对 model 是什么一直没有搞明白,以为底层数据库表对应的实体是 model,这个理解在 .NET 开发中对某些语境里是正确的,但是却不全面。我们来看一下这个模式。

MVC 模式是在开发用户界面程序中使用的一种模式,用于将应用划分成三个互相有联系的部分。

Controller 是 view 与 model 交互的桥梁,担负着入口的责任。在 Spring 中,Controller 就是使用 @Controller 注解的类, 现在流行 restful,Controller 开始使用 @RestController

View 是视图,负责展现数据。在 Spring 中,有 JSP 页面,有 thymleaf 页面等等,基本是前端展示。

Model 是模型,是一种动态数据结构,用于管理程序的数据、逻辑以及规则,这句话是从 Wikipedia 翻译过来的,让人看了不知所云。其实 Model 就是 View 与 Controller 之间交互的数据结构,这个数据结构决定了应用能处理什么,逻辑是什么。

如果是一个小的应用程序,你与界面交互的数据结构直接是数据库表的实体,那么这个实体就是 Model,如果应用很复杂,加了 service 层和 dao 层,数据库实体隐藏在后面,那么 Model 就是你与前端页面约定好的交互数据结构。Model 是什么不重要,关键认清了 Model 的位置就不会迷惑了。

MVVM 模式

MVVM 模式是 Model-View-ViewModel 的简写。这里没有写 Controller,但这个模式里却是有 Controller 的。

为什么多了 ViewModel 这么一层呢?在原生应用开发上,也是有数据库的。从服务器传来的数据,需要先将其存放到本地,然后再展现到页面上。这里就涉及到了一个 view 与 model 的对应问题。由于前端除了展现之外还有一部分业务逻辑,因此由 Model 到 View 的过程中需要翻译。如果将其全部都放到 ViewController 中,那么 ViewController 就耦合了两个职责:一是业务逻辑的转换,二是支持View 和 Model 的连接(实际上在写代码过程中,很多人把视图的绘制也放到了 ViewController 中,这样就担负了三个职责)。在 SRP 原则下,ViewController 实际上只有连接这么一个职责,因此我们需要将这一业务逻辑的转换职责放到单独的类中来承担,也就是 ViewModel。

总结

模式都是原则的体现。 MVC 模式和 MVVM 模式虽然叫法不一样,但实际上都是单一职责原则的变种。

Reference

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • MVC 模式
  • MVVM 模式
  • 总结
  • Reference
相关产品与服务
数据库
云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档