IMG_5910.JPG


MVP

未命名文件 (42).jpg


MVP

  • Presenter分离业务逻辑,做中间桥接,双向通信
  • presenter可以复用,单独测试

未命名文件 (43).jpg


MVVM

  • UI层能够从逻辑层上分离下来。
  • 数据绑定基础架构,view绑定到viewModel,然后执行一些命令在向它请求一个动作。
  • 反过来,ViewModel与Model通信,告诉它更新来响应UI。

未命名文件 (44).jpg


总结

  • 在MVP模式中,为了让UI层能够从逻辑层上分离下来,设计师们在UI层与逻辑层之间加了一层的interface。无论是UI开发人员还是数据开发人员,都要尊重这个契约、按照它进行设计和开发。
  • MVVM和MVP类似,它们之间最大的区别是VM会持有抽象的View,而MVVM使用了双向绑定,只是充当了View和Model之前的媒婆,一旦牵线成功就没媒婆什么事了,Model的变动,自动反应在View,反之亦然。

-> MVVM相较于MVP的优缺点

  1. MVVM和MVP都可以实现UI和业务逻辑的解耦,但MVP需要定义大量UI和Model的接口供Presenter调用,修改起来比较麻烦;MVVM在面对修改时,一般情况下ViewModel不需要做太多的改动。
  2. MVVM中,UI和数据的交互是自动的,并不需要Presenter转发
  3. MVVM有大量的功能是通过xml自动生成的代码实现,出现问题不利于调试
  4. 使用dataBinding会导致大量的内存消耗:
    1. 会产生多余的数组,存放view对象
    2. 针对每一个控件都会产生一个回调对象