一、MVC
- MVC是model/view/controller。分别负责数据处理、视图界面展示和业务逻辑。view接受用户的交互,将请求传递给controller处理,controller将请求发送给model进行数据更新,最后传给view进行展示。
- 缺点:activity既是controller又是view,代码复杂、测试维护困难;view和model存在隅合
二、MVP
- MVP是为解决MVC的缺点,将model和view进行解隅、通过presenter进行通信。view接收用户交互后,将请求传给presenter进行处理,p传给m,m再传回p通知v进行展示
- 优点:减少activity的臃肿;解隅合;可以将presenter用于多视图而不改变presenter的逻辑;presenter与view通过接口交互,便于单元测试
- 缺点:presenter除了业务逻辑外,还有大量view->model->view的手动逻辑,造成presenter笨重,维护困难;presenter修改需要同步修改所有实现类
三、MVVM
- MVVM是model,view,viewmodel,presenter升级成viewmodel,实现view和model的双向绑定,即dataBinding,viewmodel负责处理业务逻辑。(因为viewmodel和model绑定,所以model/view变动只改以防另一方都能及时更新到)
- 优点:model 和view分离更彻底,减轻activity压力,便于测试等等
- 缺点:对于简单项目,大材小用;过大的项目内存开销大影响性能;页面追踪不方便