美文网首页Android
Android 框架 MVC、MVP、MVVM

Android 框架 MVC、MVP、MVVM

作者: Merbng | 来源:发表于2020-03-17 14:48 被阅读0次

    MVC

    MVC 用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,
    不需要重新编写业务逻辑。其中Model层处理数据、业务逻辑等;View层处理界面显示的结果;Controller层起到桥梁的作用,
    来控制View层和Model层通信以此来达到分离视图显示和业务逻辑层。

    我们往往把Android中界面部分也理解采用了MVC框架,常常把Activity理解成MVC中的Controller

    • 特点
    1. 耦合性低
    2. 可扩展性好
    3. 模块职责划分明确
      什么时候适合用MVC模式呢? 当一个项目很小的时候

    MVP

    而MVP其实是MVC的一种演进版本,它更简单,将MVC中的Controller改为了Presenter,View通过
    接口与Presenter进行交互,降低耦合,方便进行单元测试

    • View:负责绘制UI元素,与用户进行交互(Activity、View、Fragment都可以作为View层)
    • Model:对数据的操作、对网络等的操作,与业务相关的逻辑处理;
    • Presenter:作为View与Model交互的中间纽带,处理用户交互的逻辑。可以把Presenter理解为一个中间层的角色,
      它接受Model层的数据,并且处理之后传递给View层,还需要处理View层的用户交互等操作。

    MVP的优点与问题

    • 优点
      1. UI层与逻辑层分离,UI层不再涉及业务逻辑代码,某层的改动不需要到处修改代码。
      2. 测试很方便,你可以直接调用presenter层写测试用例
      3. 可维护性和扩展性,MVP各个类的职责都非常明确且单一,后期的扩展和维护更加容易
    • 缺点
      当然,坏处也很明显,首先代码类增加了,一个小功能你可能要为它专门写presenter和model层的实现,
      以前这些都是加在View层的。

    MVVM

    和MVP模式相比,MVVM模式用ViewModel替换了presenter,其他层基本与MVP模式一样,
    ViewModel可以理解成是View的数据模型和Presenter的合体,MVVM采用双向绑定(data-binding):
    View的变动,自动反映在ViewModel上,反之亦然,这种模式实际上是框架替我们应用开发者
    做了一些工作(相当于ViewModel类是库帮我们生成的),开发者只需要较少的代码就能实现比较复杂的交互,
    这一步还是比较吸引人的,可以少些很多模版代码。

    • 缺点:
    1. 数据绑定使得bug很难被调试,你看到界面异常了,有可能是你的View代码有bug,也有可能是Model的代码的问题,数据绑定使得一个位置的bug被快速传递到新的别的位置,要定位原始问题的地方变得不那么容易了
    2. 对于过大的项目,数据绑定需要花费更多的内存。

    相关文章

      网友评论

        本文标题:Android 框架 MVC、MVP、MVVM

        本文链接:https://www.haomeiwen.com/subject/rfetyhtx.html