【Android】【代码架构】MVP架构研究(一):Android中的MVC模式

MVC是一种传统架构模式,广泛应用于各种语言的应用开发中

  • View层:视图层,定义界面
  • Controller层:控制层,处理业务逻辑
  • Model层:数据层,定义数据对应的类模型,一般处于被动状态,比如由Controller通过网络请求获取数据,再由Controller将数据保存到数据库,或者View将界面数据保存到实体类中,Model层无法主动调用其它层
  • Model层在代码量的占比中比较轻薄,在设计中主要是研究View层和Controller层的分离互动方式
    在这里插入图片描述

这里以登录和记录位置两个功能,来说明MVC在安卓中的运作流程

  • 启动Activity(View建立)
  • 点击登录按钮,触发登录按钮事件,向服务器发出登录请求(View调用Controller)
  • 服务器返回数据,解析成User对象(Controller生成Model对象)
  • 登录成功,Activity将User数据显示到界面上(Controller将处理结果和Model传递给View)
  • 用户位置发生变化,Activity修改了自己User对象中的location信息(View修改Model)

在以往的安卓开发中(包括现在的很多新手),习惯把全部的代码都写在Activity中,在监听器中处理业务,处理完毕后,再通过新的数据来更新界面,View层和Controller层都集中在了Activity中,没有被明确分离开来。
对于工程思维和架构能力比较弱的新手来说,所有代码都写在Activity中,就免去了考虑不同层直接如何相互调用,分工合作的麻烦。但是当项目规模逐渐变大的时候,项目就会出现各种维护上的难题。

  • Activity体积变大,代码难以阅读和查找
  • 代码都写在Activity里面,其它地方遇到相同功能,无法复用代码
  • 代码分工不明确,逻辑不够清晰,调试困难(当调用层次很深时,要在各个方法里面乱跳,由于代码全部臃肿地堆积在一个文件里面,很容易就头晕)

这里要强调,并不是MVC本身不好,最重要的是,许多安卓开发人员习惯将View和Controller的代码都写在Activity里面,最终导致了Activity的臃肿。如果能够改变传统写法,将Controller代码分离出来,MVC并不比MVP差到哪里。

猜你喜欢

转载自blog.csdn.net/u013718730/article/details/88746937