Android——超简单GT_MVVM 深究系列-中篇

非侵入式的 GT架构,请参考上篇:
超简单GT_MVVM入门系列-上篇https://blog.csdn.net/qq_39799899/article/details/123801259?spm=1001.2014.3001.5501

下面就是博主,用 GT架构 分分钟开发一款小游戏,具体效果图如下:

下面将详细 介绍 GT架构 ,建议先下载源码,结合源码与文章一起学习。

本篇介绍的是:超简单GT_MVVM 高手系列-中篇

前言:(侵入式GT_MVVM)

这套架构!用起来太爽了,GT库又整黑科技了,博主为了今后开发能少写代码,近期一直在 GT 库内封装的 辅助编程类里 下功夫,终于出了一套新的 编程架构

 原版 MVVM模式:

watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAUGxheWZ1bEtpbmc=,size_20,color_FFFFFF,t_70,g_se,x_16

 (先解释一下箭头)

View ↔ ViewModel表示:View与ViewModel相互绑定,然后ViewModel与Model又相互持有彼此引用,相互持有引用相信大家已经非常熟悉了,但这相互绑定是怎样的,没了解过的伙伴估计不太理解。

相互绑定的话,View可以通过 ViewModel 从 Model 中获取数据;当获取到了数据之后,会通过自动绑定相互绑定的作用,设置到View界面展示。

相互绑定的作用:可以省去 组件获取、事件注册、数据获取、数据更新这些代码。这就是原版的 MVVM架构,但MVVM也并非全是优点,还有非常头疼的缺点,但MVVM框架思想还是很牛叉的

原版 MVVM的-优势:
(1) 使得M,V,VM的解耦更加彻底,在mvp模式中,p需要持有V的引用,才能去刷新UI,在MVVM模式中,View和Model使用databingding进行双向绑定,一方改变会直接通知另外一方,使得viewModel能专注于业务逻辑的处理,而不需要去关心UI刷新。
(2) 不会像MVC一样导致Activity中代码量巨大,也不会像MVP一样出现大量的View接口(Presente与View是通过接口进行交互的)。项目结构更加低耦合。

原版 MVVM的-劣势:
(1) 数据绑定使得Bug很难被调试。
(2) 一个大的模块中,model也会很大,虽然使用方便了也很容易保证了数据的一致性,但是长期持有,不释放内存,就造成了花费更多的内存。
(3) 数据双向绑定不利于代码重用。客户端开发最常用的重用时View,但是数据双向绑定技术,让你在一个View都绑定了一个model,不同模块的model都不同,那就不能简单重用View了。

上面都是大家公认的 MVVM 情况,其实博主个人还对 MVVM 有一个特殊的疑惑

需要对 xml布局 进行特殊编码,没法保持每部分的代码的整洁,也就是说要是出现一些特殊问题,我还有可能需要改到 xml布局。

创造出GT架构 意义在于:

(1) 将我们项目中 成千上万行的代码进行功能分类 (便于维护)。

(2) 提高相同功能代码的重复使用率 (少写超级多代码)

(3) 彻底解耦,让各自功能的代码保持专一的完成各自任务,保持每个部分代码的整洁性杜绝 牵一发而动全身的情况 (再也不怕修水管了)。

GT_MVVM 实际情况就是, 修改 View 层,不会影响到 ViewModel 层,修改 ViewModel 层也不会影响到 Model 层,让他们彻底独立解耦

总结:越用到后期越省代码量,GT架构 是适合懒人且对有代码洁癖的场景使用的。

前面做了这么长的铺垫,那么GT架构 到底怎么实现呢,下面的内容将详细介绍 GT架构

 在使用GT库里封装的架构当然需要先依赖好GT库:

GitHub - 1079374315/GTContribute to 1079374315/GT development by creating an account on GitHub.https://github.com/1079374315/GT

GT架构虽然是在 MVVM 的编程思想上进行扩展进化而来的,但思维导图还是有细微差别,下面就是 GT_MVVM 的思维导图。

GT架构的GT_MVVM 框架,由 ViewModel层Model层 拿到对应的数据后 再主动推消息给View层 进行UI更新,神奇吧。而且所有 View层 都是共用同一个 ViewModel 的,这就让代码有超高的重复使用率,而各个 Model层 如:网络请求Model数据库Model其他数据Model、均是独立的Model,都是由 总Model层 单向调用的,这才保持了 各个模块中职能专一彻底解耦

看懂这个思维导图的小伙伴们应该会有个疑问:

只有一个ViewModel,虽然看上去确实提高了代码重复使用率,但这么多繁重的任务都给到了ViewModel,那岂不是ViewModel层代码会越来越多,那到后期岂不是很难维护了。

博主:第一点确实说对了,ViewModel层会随着项目变大,代码也会越变越多,但一点也不难维护!!!为啥?因为ViewModel层的职责也非常专一,仅仅是 View层 找它要谁的数据, viewModel层就给它谁数据,仅仅负责这一功能,所以往往,在这个思维导图里,最容易维护的还是 ViewModel 层,因为它太单纯了,既不受 View层的 管束 也不受 Model层的管束。

博主就将该项目源码直接贴下了

本章项目源码:

https://github.com/1079374315/GTProjecthttps://github.com/1079374315/GTProject

可安装apk免费下载:https://download.csdn.net/download/qq_39799899/86779994

注意: 重点是看 GT架构 是如何使用搭建的,不要沉迷游戏哦。

 点个关注点个赞呗(〃'▽'〃)   关注博主最新发布库:GitHub - 1079374315/GT

猜你喜欢

转载自blog.csdn.net/qq_39799899/article/details/127093032