zoukankan      html  css  js  c++  java
  • Android之MVP架构

    MVP(Model View Presenter)模式是由MVC模式发展而来的,在如今的Android程序开发中显得越来越重要。本篇文章简单讨论了MVP模式的思想。

    啥是MVP

    MVP模式的主要思想是将程序的业务逻辑从表现层分离出来,理想情况下,MVP模式可以使得相同的逻辑拥有完全不同且可互换的views。

    为啥要用MVP

    在Android实际开发过程中,我们会遇到这样的问题:Android中的activity与界面展示和数据访问机制耦合度非常高,既负责页面组件的展示,又负责处理业务逻辑。一个极端的例子就是混合适配器CursorAapter,它既是view的一部分,却又带有cursor,应该放在数据访问层。

    为了应用程序具有好的扩展性和可维护性,我们需要有好的架构分层设计。假如以后我们不再从数据库中取数据,而是从网络中获取数据,那么我们只好重新做一个view出来。

    MVP分层架构可以使views与数据源相互分离,将业务逻辑从activity中分离出来,它将应用程序至少分为三个不同的层次,从而可以分开独立地调试程序。

    怎么用MVP

    MVP的架构并不是很死板的,不同的开发人员可以根据自己工程的需要,将MVP的思想运用在自己的项目中。

    The presenter

    Presenter作为View层和Model层的中间层,它负责根据业务逻辑从model层中检索数据并将其格式化,返回给View层。但是,它不像传统的MVC那样,它还负责响应你与View的交互。

    The View

    view层常常由activity来实现(也可以使Fragment,View等),它往往持有一个presenter的引用。通常情况下,通过引用注入的方式DI,可以完美地将presenter提供给view层调用。(例子Dagger)View层所要做的就是,通过该引用来调用presenter中的方法来完成对用户在界面操作的相应。

    The model

    model层是用来完成数据的提供服务。在一个分层架构良好的应用程序中,model层仅仅是作为业务逻辑层访问数据的一个入口。文章:Uncle Bob clean architecture

     

    总结

    在Android中将业务逻辑与界面分离并不是一件很容易的事儿,通过MVP的架构思想,我们试图减少activity中的代码量,这样做会使得我们的程序扩展性和可维护性更好。GitHub上关于MVP有一个很好的例子an MVP example on Github

  • 相关阅读:
    HDU 1081 To The Max (DP) 扩展最大子列和,求最大子矩阵和
    How to Log SOAP Message Content in Metro?(官方解答)
    纪晓岚与和珅对调后的工作困难
    蒙版
    2011年选拔赛C本科
    网络常用语
    linux怎么用一个命令行统计出给定目录中有多少个子目录
    REGSVR32
    香水
    判断一个数是否是2的平方
  • 原文地址:https://www.cnblogs.com/cqumonk/p/4392285.html
Copyright © 2011-2022 走看看