warning: 这篇文章距离上次修改已过577天,其中的内容可能已经有所变动。
在Android Studio中,xml写layout只能是算画个草图,对界面的监听改变等逻辑都要在activity/fragment里处理,大型项目中会使其显得非常臃肿,难以维护。故而需要使用适合的开发模式使得项目易于阅读和维护。
- MVC
- 优点:
- 缺点:
- MVP
- 优点:
- 缺点:
- MVVM
- 优点:
- 缺点:
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模式示例图 *来自知乎
优点:
- 结构清晰,职责划分清晰
- 模块间充分解耦
- 有利于组件的重用
缺点:
- 会引入大量的接口,导致项目文件数量激增
- 增大代码结构复杂性
MVVM
- Model 模型,负责数据的加载和存储。
- View 视图,负责界面的展示。
- ViewModel 控制器,负责逻辑控制。实现ViewModel的关键是DataBinding,把数据和View绑定起来,然后数据改变的时候View会自动刷新。
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
*文章仅供学习参考,如有侵权请联系删除