优点: 一定程度上实现了Model 与 View 的分离,降低了代码的耦合度。
缺点: Controller 与 View 难以完全解耦,并且随着项目复杂度的提升,Controller 将越来越臃肿(Controller既是业务逻辑的控制器,又要承担部分视图层的工作)。
优点:解决了MVC 中 Controller 与 View 过度耦合的缺点,职责划分明显,更加易于维护。
缺点:接口数量多,项目复杂度升高。随着项目复杂度的提升,Presenter 层将越来越臃肿。
MVVM 是 Model - View - ViewModel 的简写,MVVM 在MVP的基础上实现了数据视图的双向绑定(DataBinding),当数据变化时,视图会自动更新;当视图发生变化时,数据也会自动更新。
层级解释 层级描述Model数据处理层(如网络请求、数据库操作等)Viewlayout(获取用户输入、更新页面数据)ViewModel业务逻辑处理、数据更新 优缺点优点:减少了接口数量,告别繁琐的 findViewById 操作。(实现数据与视图的双向绑定,简化代码)。
缺点:dataBinding 目前还存在一些编译问题。
补充通过LiveData + ViewModel来调用 Activity 的方法
LiveData 是一个可以被观察的数据持有者,它可以通过添加观察者的方式来让其他组件观察它的变更。LiveData 遵从应用程序的生命周期(如果LiveData的观察者已经被销毁了,LiveData就不会通知该观察者)。