博客
关于我
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/

    你可能感兴趣的文章
    Netty的Socket编程详解-搭建服务端与客户端并进行数据传输
    查看>>
    Netty相关
    查看>>
    Network Dissection:Quantifying Interpretability of Deep Visual Representations(深层视觉表征的量化解释)
    查看>>
    Network Sniffer and Connection Analyzer
    查看>>
    NetworkX系列教程(11)-graph和其他数据格式转换
    查看>>
    Networkx读取军械调查-ITN综合传输网络?/读取GML文件
    查看>>
    Net与Flex入门
    查看>>
    net包之IPConn
    查看>>
    NFinal学习笔记 02—NFinalBuild
    查看>>
    NFS共享文件系统搭建
    查看>>
    nfs复习
    查看>>
    NFS网络文件系统
    查看>>
    nft文件传输_利用remoting实现文件传输-.NET教程,远程及网络应用
    查看>>
    ng 指令的自定义、使用
    查看>>
    Nginx
    查看>>
    nginx + etcd 动态负载均衡实践(二)—— 组件安装
    查看>>
    nginx + etcd 动态负载均衡实践(四)—— 基于confd实现
    查看>>
    Nginx + Spring Boot 实现负载均衡
    查看>>
    Nginx + uWSGI + Flask + Vhost
    查看>>
    Nginx - Header详解
    查看>>