学习笔记 | Android开发常用的几种模式

warning: 这篇文章距离上次修改已过1242天,其中的内容可能已经有所变动。

在Android Studio中,xml写layout只能是算画个草图,对界面的监听改变等逻辑都要在activity/fragment里处理,大型项目中会使其显得非常臃肿,难以维护。故而需要使用适合的开发模式使得项目易于阅读和维护。


MVC

  • Model 模型,负责数据的加载和存储。
  • View 视图,负责界面的展示,一般在activity或fragment里实现。
  • Controller 控制器,负责逻辑控制,将操作转发给特定的Model。

优点:

  • 结构清晰,职责划分清晰
  • 降低耦合
  • 有利于组件重用

缺点:

  • 一般来说,Activity /Fragment 会承担 View和Controller 两个角色,就会导致 Activity / Fragment 中代码较多
  • Model 直接操作 View,View 的修改会导致 Controller 和 Model 都进行改动
  • 增加了代码结构的复杂性

MVP

  • Model 模型,负责数据的加载和存储。
  • View 视图,负责界面的展示。
  • Presenter 控制器,负责逻辑控制。

与MVC模式大同小异,在 MVC中Model 直接操作View 进行视图展示,而在MVP 里,要通知Presenter 去中转。

MVP模式示例图 *来自知乎MVP模式示例图 *来自知乎

优点:

  • 结构清晰,职责划分清晰
  • 模块间充分解耦
  • 有利于组件的重用

缺点:

  • 会引入大量的接口,导致项目文件数量激增
  • 增大代码结构复杂性

MVVM

  • Model 模型,负责数据的加载和存储。
  • View 视图,负责界面的展示。
  • ViewModel 控制器,负责逻辑控制。实现ViewModel的关键是DataBinding,把数据和View绑定起来,然后数据改变的时候View会自动刷新。

MVVM示例图 *来自第三方博客MVVM示例图 *来自第三方博客

优点:

  • 结构清晰,职责划分清晰
  • 模块间充分解耦
  • 在 MVP 的基础上,MVVM 把 View 和 ViewModel 也进行了解耦

缺点:

  • Debug 困难,由于 View和ViewModel 解耦,导致Debug 时难以一眼看出View的事件传递
  • 代码复杂性增大

参考文章:
[1]Android 开发中常用到的设计模式有哪些?
https://zhuanlan.zhihu.com/p/83635530
[2] Android之MVVM开发模式
https://www.cnblogs.com/loaderman/p/10076529.html

*文章仅供学习参考,如有侵权请联系删除

添加新评论