博客
关于我
Android MVC&MVP架构模式的总结
阅读量:625 次
发布时间:2019-03-13

本文共 1540 字,大约阅读时间需要 5 分钟。

MVC(M model View Controller)和MVP(M model View Presenter)是软件开发中的两种常用架构模式,两者在应用开发中各有优势。本文将从基础到应用详细解析这两种模式的特点、组成以及优缺点。

MVC Model View Controller

MVC是一种经典的三层架构模式,主要思想是将应用程序划分为三个相互独立的部分:Model、View和Controller。

MVC的组成与功能

  • Model(模型)

    Model是应用程序的核心部分,承担所有业务逻辑。它负责数据的处理、存储和管理,是整个应用的主体。

  • View(视图)

    View负责生成并管理用户界面。它是应用程序中唯一可以直接与用户交互的部分,接收用户输入并显示处理结果。

  • Controller(控制器)

    Controller作为应用程序的中枢调度,负责根据用户输入控制用户界面显示及Model状态的更新。它不仅负责事件的处理,还负责将业务逻辑与用户界面分开管理。

  • MVC的优缺点

    • 优点

      • 代码分离:通过将业务逻辑与视图分离,简化了UI更换和定制的工作量。
      • 灵活性:Model、View和Controller可以独立开发和维护,便于扩展和个性化定制。
    • 缺点

      • 耦合度高:传统MVC中,View和Controller往往耦合紧密,难以实现完全的分离。
      • 复杂性:在实际项目中,Controller往往承担了大量与View相关的逻辑处理,使得代码臃肿。

    MVP Model View Presenter

    MVP是MVC的升级版,通过引入Presenter层,进一步降低了View和Model之间的耦合度。

    MVP的组成与功能

  • Model(模型)

    Model与MVC中的Model一致,负责数据处理和业务逻辑。

  • View(视图)

    View在MVP中与MVC中的View类似,负责生成和管理用户界面。

  • Presenter(展示器)

    Presenter是MVP的核心,负责协调Model和View的交互。它处理用户输入、业务逻辑处理以及UI状态更新。

  • MVP的优缺点

    • 优点

      • 耦合度降低:Presenter层作为Model和View的中介,降低了两者之间的耦合度。
      • 代码简化:Presenter负责业务逻辑处理,使得View层(如Activity)更加简洁。
      • 更高的可测试性:通过Presenter的引入,提高了组件的可测试性,特别是在单元测试方面。
    • 缺点

      • 复杂性增加:引入Presenter层后,开发过程中需要更多的接口定义和实现。
      • Activity依然臃肿:即便引入MVP,Activity中仍然可能包含大量与View无关的逻辑处理。

    MVP与MVC的区别

    • MVC与MVP的核心区别:MVC中,Model和View是直接关联的,而MVP中,Model和View之间通过Presenter层进行间接交互。
    • Controller与Presenter的区别:在MVC中,Controller承担了逻辑控制的任务;在MVP中,Presenter承担了更复杂的逻辑处理,包括业务逻辑和UI状态管理。

    MVP的缺点

    尽管MVP在一定程度上解决了MVC的耦合问题,但在实际项目中仍然存在一些问题。例如:

    • Activity依然臃肿:Presenter层的引入并未完全解决Activity中的逻辑处理问题,Activity中仍然可能包含大量与View无关的代码。
    • 开发复杂性:Presenter层的引入增加了接口的数量和复杂性,可能导致开发过程更加繁琐。

    通过对MVC和MVP的对比,可以看出两种架构模式各有特点。在选择架构模式时,开发者需要根据项目需求、开发团队的经验以及项目复杂度进行权衡。

    转载地址:http://ztyoz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现euler method欧拉法算法(附完整源码)
    查看>>
    Objective-C实现euler modified变形欧拉法算法(附完整源码)
    查看>>
    Objective-C实现eulerianPath欧拉路径算法(附完整源码)
    查看>>
    Objective-C实现Eulers TotientFunction欧拉函数算法(附完整源码)
    查看>>
    Objective-C实现eulers totient欧拉方程算法(附完整源码)
    查看>>
    Objective-C实现EulersTotient欧拉方程算法(附完整源码)
    查看>>
    Objective-C实现eval函数功能(附完整源码)
    查看>>
    Objective-C实现even_tree偶数树算法(附完整源码)
    查看>>
    Objective-C实现Exceeding words超词(差距是ascii码的距离) 算法(附完整源码)
    查看>>
    Objective-C实现exchange sort交换排序算法(附完整源码)
    查看>>
    Objective-C实现ExponentialSearch指数搜索算法(附完整源码)
    查看>>
    Objective-C实现extended euclidean algorithm扩展欧几里得算法(附完整源码)
    查看>>
    Objective-C实现ExtendedEuclidean扩展欧几里德GCD算法(附完整源码)
    查看>>
    Objective-C实现external sort外排序算法(附完整源码)
    查看>>
    Objective-C实现Factorial digit sum阶乘数字和算法(附完整源码)
    查看>>
    Objective-C实现factorial iterative阶乘迭代算法(附完整源码)
    查看>>
    Objective-C实现factorial recursive阶乘递归算法(附完整源码)
    查看>>
    Objective-C实现factorial阶乘算法(附完整源码)
    查看>>
    Objective-C实现factorial阶乘算法(附完整源码)
    查看>>
    Objective-C实现Factors因数算法(附完整源码)
    查看>>