mvc、mvp、mvvm

2020-02-10  本文已影响0人  couriravant

MVC

Activity并非标准的Controller,它一方面用来控制了布局,另一方面还要在Activity中写业务代码,造成了Activity既像View又像Controller。
在Android开发中,就是指直接使用Activity并在其中写业务逻辑的开发方式。显然,一方面Activity本身就是一个视图,另一方面又要负责处理业务逻辑,因此逻辑会比较混乱,Activity负担较重。
这种开发方式不太适合Android开发。

MVP

Model和View不会直接发生关系,它们需要通过Presenter来进行交互。在实际的开发中,我们可以用接口来定义一些规范,然后让我们的View和Model实现它们,并借助Presenter进行交互即可。


image.png

MVC 和 MVP 的区别

MVC 中是允许 Model 和 View 进行交互的,而MVP中,Model 与 View 之间的交互由Presenter完成;

优点:

1.降低耦合度,实现了 Model 和 View 真正的完全分离,可以修改 View 而不影响 Modle;
2.模块职责划分明显,层次清晰;
3.Presenter 可以复用,一个 Presenter 可以用于多个 View,而不需要更改 Presenter 的逻辑;
4.利于测试驱动开发,以前的Android开发是难以进行单元测试的;

缺点:

Presenter 中除了应用逻辑以外,还有大量的 View->Model,Model->View 的手动同步逻辑,造成 Presenter 比较笨重,维护起来会比较困难;
由于对视图的渲染放在了 Presenter 中,所以视图和 Presenter 的交互会过于频繁;
如果 Presenter 过多地渲染了视图,往往会使得它与特定的视图的联系过于紧密,一旦视图需要变更,那么Presenter也需要变更了。

MVVM

MVVM 是 Model-View-ViewModel 的简写。它本质上就是 MVC 的改进版。MVVM 就是将其中的 View 的状态和行为抽象化,让我们将视图 UI 和业务逻辑分开。

image.png

优点:
1.View和 model解构
No tight coupling between the view and view model

  1. view and model 没有那么多接口了
    3.方便单元测试

缺点:

You have to create observables for each UI component.

上一篇 下一篇

猜你喜欢

热点阅读