MVP
MVP
- Presenter分离业务逻辑,做中间桥接,双向通信
- presenter可以复用,单独测试
MVVM
- UI层能够从逻辑层上分离下来。
- 数据绑定基础架构,view绑定到viewModel,然后执行一些命令在向它请求一个动作。
- 反过来,ViewModel与Model通信,告诉它更新来响应UI。
总结
- 在MVP模式中,为了让UI层能够从逻辑层上分离下来,设计师们在UI层与逻辑层之间加了一层的interface。无论是UI开发人员还是数据开发人员,都要尊重这个契约、按照它进行设计和开发。
- MVVM和MVP类似,它们之间最大的区别是VM会持有抽象的View,而MVVM使用了双向绑定,只是充当了View和Model之前的媒婆,一旦牵线成功就没媒婆什么事了,Model的变动,自动反应在View,反之亦然。
-> MVVM相较于MVP的优缺点
- MVVM和MVP都可以实现UI和业务逻辑的解耦,但MVP需要定义大量UI和Model的接口供Presenter调用,修改起来比较麻烦;MVVM在面对修改时,一般情况下ViewModel不需要做太多的改动。
- MVVM中,UI和数据的交互是自动的,并不需要Presenter转发
- MVVM有大量的功能是通过xml自动生成的代码实现,出现问题不利于调试
- 使用dataBinding会导致大量的内存消耗:
- 会产生多余的数组,存放view对象
- 针对每一个控件都会产生一个回调对象