重走安卓进阶路——架构方式MVX

架构方式解决的痛点是工程中的文件/类之间的关系,通过对变量、方法的分离让整体的文件结构管理起来更有章法(高内聚、低耦合)

-阮一峰-MVC,MVP 和 MVVM 的图示
=浅谈 MVC、MVP 和 MVVM 架构模式
+第一章第一节:MVX模式是什么?MVC、MVP、MVVM详解

MVC 特点:1. View传送指令到Controller

  1. Controller完成指令后要求Model改状态
  2. Model将新数据发送给View,用户有反馈所有通信单向
    MVVM 特点:1. 各部分间通信是双向的
  3. 采用双向绑定: View的变动,自动反映在ViewModel,反之亦然

1.mvc:数据、View、Activity,View 将操作反馈给 Activity,Activitiy 去获取数据,数据通过观察
者模式刷新给 View。循环依赖
o 1.Activity 重,很难单元测试
o 2.View 和 Model 耦合严重
2.mvp:数据、View、Presenter,View 将操作给 Presenter,Presenter 去获取数据,数据获取好了返
回给 Presenter,Presenter 去刷新 View。PV,PM 双向依赖
o 1.接口爆炸
o 2.Presenter 很重
3.mvvm:数据、View、ViewModel,View 将操作给 ViewModel,ViewModel 去获取数据,数据和
界面绑定了,数据更新界面更新。
o 1.viewModel 的业务逻辑可以单独拿来测试
o 2.一个 view 对应一个 viewModel 业务逻辑可以分离,不会出现全能类
o 3.数据和界面绑定了,不用写垃圾代码,但是复用起来不舒服

  1. 单元测试
  2. 文件数量、文件重量
  3. 业务上的分离,架构单元间的耦合

MVP,MVVM,MVC 解释和实践
MVC: 视图层(View) 对应于 xml 布局文件和 java 代码动态 view 部分
 控制层(Controller) MVC 中 Android 的控制层是由 Activity 来承担的,
Activity 本来主要是作为初始化页面,展示数据的操作,但是因为 XML 视
图功能太弱,所以 Activity 既要负责视图的显示又要加入控制逻辑,承担
的功能过多。
 模型层(Model) 针对业务模型,建立数据结构和相关的类,它主要负责网
络请求,数据库处理,I/O 的操作。
总结
具有一定的分层,model 彻底解耦,controller 和 view 并没有解耦 层与层之间
的交互尽量使用回调或者去使用消息机制去完成,尽量避免直接持有 controller
和 view 在 android 中无法做到彻底分离,但在代码逻辑层面一定要分清 业务逻
辑被放置在 model 层,能够更好的复用和修改增加业务。
MVP
通过引入接口 BaseView,让相应的视图组件如 Activity,Fragment 去实现
BaseView,实现了视图层的独立,通过中间层 Preseter 实现了 Model 和 View
的完全解耦。MVP 彻底解决了 MVC 中 View 和 Controller 傻傻分不清楚的问题,
但是随着业务逻辑的增加,一个页面可能会非常复杂,UI 的改变是非常多,会
有非常多的 case,这样就会造成 View 的接口会很庞大。
MVVM
MVP 中我们说过随着业务逻辑的增加,UI 的改变多的情况下,会有非常多的跟
UI 相关的 case,这样就会造成 View 的接口会很庞大。而 MVVM 就解决了这个
问题,通过双向绑定的机制,实现数据和 UI 内容,只要想改其中一方,另一方
都能够及时更新的一种设计理念,这样就省去了很多在 View 层中写很多 case
的情况,只需要改变数据就行。
MVVM 与 DataBinding 的关系?
MVVM 是一种思想,DataBinding 是谷歌推出的方便实现 MVVM 的工具。
看起来 MVVM 很好的解决了 MVC 和 MVP 的不足,但是由于数据和视图的双向
绑定,导致出现问题时不太好定位来源,有可能数据问题导致,也有可能业务逻
辑中对视图属性的修改导致。如果项目中打算用 MVVM 的话可以考虑使用官方
的架构组件 ViewModel、LiveData、DataBinding 去实现 MVVM。
三者如何选择?
 如果项目简单,没什么复杂性,未来改动也不大的话,那就不要用设计模
式或者架构方法,只需要将每个模块封装好,方便调用即可,不要为了使
用设计模式或架构方法而使用。
 对于偏向展示型的 app,绝大多数业务逻辑都在后端,app 主要功能就是
展示数据,交互等,建议使用 mvvm。
 对于工具类或者需要写很多业务逻辑 app,使用 mvp 或者 mvvm 都可。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,783评论 5 472
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,396评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,834评论 0 333
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,036评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,035评论 5 362
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,242评论 1 278
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,727评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,376评论 0 255
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,508评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,415评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,463评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,140评论 3 316
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,734评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,809评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,028评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,521评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,119评论 2 341

推荐阅读更多精彩内容

  • DataBinding是一个实现数据和UI绑定的框架,是实现MVVM模式的工具,而MVVM中的VM(ViewMod...
    mahongyin阅读 1,708评论 0 1
  • 如何将我们的安卓应用程序组织成相应的逻辑部件这个问题已经被讨论了很长时间了。目前大部分开发人员都抛弃了传统的Mod...
    JasonBourney阅读 431评论 0 3
  • 我曾经有一个瞬间觉的我的Model定义全都是错的。经过在各种安卓开发论坛也好主题也罢的讨论和头疼的研究。无论如何,...
    PcDack阅读 2,921评论 2 17
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,458评论 16 22
  • 创业是很多人的梦想,多少人为了理想和不甘选择了创业来实现自我价值,我就是其中一个。 创业后,我由女人变成了超人,什...
    亦宝宝阅读 1,796评论 4 1