MVC架构:
View: 对应于布局(XML)文件
Model:业务逻辑和实体模型
Controllor: 对应于Activity
三者可以直接通信(两两通信)
MVC工作原理:
通过Controller的控制去操作Model层的数据,并且返回给View层展示
MVC缺点:
(1)Activity的负担非常重,既要初始化控件,又要写一些逻辑操作的展示等等,有时候很多Activity中的代码都充当了Controller和Model的角色,所以你会发现Activity违背单一职责原则,负担过重。
(2)View和Model之间存在耦合。
MVP架构:
MVP由来: Activity的负担非常重,既要初始化控件,又要写一些逻辑操作的展示等等,有时候很多Activity中的代码都充当了Controller和Model的角色,从MVC到MVP的一个转变,就是减少了Activity的职责,减轻了它的负担,简化了Activity中的代码和一些操作,将逻辑代码提取到了Presenter中进行处理,降低了其耦合度。
MVP概念 :MVP就是Model-View-Presenter
MVP与MVC区别: MVP是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
MVP架构角色 :
View: 对应于Activity/Fragment,负责View的绘制以及与用户交互
Model: 依然是业务逻辑和实体模型
Presenter: 负责完成View于Model间的交互
MVP工作原理:
用于操作view层发出的事件传递到presenter层中,presenter层去操作model层,并且将数据返回给view层,整个过程中view层和model层完全没有联系;
view层和presenter层的通信,是可以接口实现的,具体的意思就是说我们的activity,fragment可以去实现实现定义好的接口,而在对应的presenter中通过接口调用方法。
MVP的优点:
1.降低耦合度,隐藏数据,Activity中代码更简洁
2.模块职责划分明显
3.方便测试驱动开发
4.代码复用度较高
5.代码灵活性
MVP的缺点: 每个view有个presenter ,类多了。不说presenter重用,实际工作中我是没法抽象使得presenter重用(技术渣)。有时候业务简单就直接一个Activity搞定了。
MVVM架构:
它和MVP的区别貌似不大,只不过是presenter层换成了viewmodel层;
还有一点就是view层和viewmodel层是相互绑定的关系,这意味着当你更新viewmodel层的数据的时候,view层会相应的变动ui;