在做项目或者在学习的时候,或多或少会听到 MVVM 这个架构,那么现在来简单讲一下 MVVM 架构
MVVM(Model-View-ViewModel)框架的由来便是MVP(Model-View-Presenter)模式与 WPF 结合的应用方式时发展演变过来的一种新型架构框架;它立足于原有 MVP 框架并且把 WPF 的新特性糅合进去,以应对客户日益复杂的需求变化
MVVM 分为 Model、View、ViewModel 三者
MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开
当然这些事 ViewModel 已经帮我们做了,它可以取出 Model 的数据同时帮忙处理 View 中由于需要展示内容而涉及的业务逻辑
MVVM 开发模式,低耦合,逻辑分明;Model 层负责将请求的数据交给 ViewModel
ViewModel 层负责将请求到的数据做业务逻辑处理,最后交给 View 层去展示,与 View 一一对应
View 层只负责界面绘制刷新,不处理业务逻辑,非常适合分配独立模块开发
非简单数据模型,复合数据模型( DO 的属性值不是一个 string ,而是一个 Object ,且这个 Object 可能还嵌套多层 Obejct 的时候)的处理办法,这个一般的 MVVM 框架 直接不考虑,或者通过长字段名的方式绕过这个问题
这个问题是这样的,早在 10 几年前, java structs 框架流行的时候就出现了;当一个表单,出现需要对两个 Java Bean 做 update 操作时候,一个 bean 是 user ,一个 bean 是成绩
对应的表单字段名,就是 user 表 .name, user 表 .id,score 表 .point
在 struct2 里面,处理逻辑是把 “点” 作为特殊符号,在做 form 序列化时候,非包含点的字段的值都是 string ,包含点的字段是一个 Object ,比如刚才的 form 序列化之后结果就是 { user: {id :’’ , name: ‘’}, score: {id: ‘’, point: ‘’}}
同理在 MVVM 实现时,也是一样,认为点是分割对象的关键字,这样我们就可以实现把多个对象嵌套到View模板里面,实现复合Object的双向映射
至此,我们今天 MVVM 的开源框架特性与知识点就介绍到这里了;希望以上的内容能够对大家有所帮助,关于 MVVM 的相关技术问题,我们还要去好好的学习剖析 ;因此我把工作中遇到的 Jetpack 组件开源库相关问题,以及对网上大部分的资料的收集和整理,最终整合出了一份 《Jetpack 全家桶高级开发学习笔记》,有需要这份学习笔记的朋友,可以 私信 发送 “笔记” 即可 免费获取 希望大家通过阅读这份学习笔记,能够查漏补缺;早日精通 Jetpack
资料内容展示如下:
由于篇幅有限,资料就不做完全展示了;有需要完整版 Jetpack 全家桶高级开发学习笔记的朋友:可以 私信 发送 “笔记” 即可 免费获取
对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们
技术是无止境的,你需要对自己提交的每一行代码、使用的每一个工具负责,不断挖掘其底层原理,才能使自己的技术升华到更高的层面
加油!各位 Android 开发者们