Android MVC 模式
MVC 模式
MVC(Model-View-Controller,模型-视图-控制器)模式是 20 世纪 80 年代 Smalltalk-80 出现的一种软件设计模式,其后来得到了广泛的应用。它用一种业务逻辑、数据、界面显示分离的方法组织代码,在改进和个性化定制界面及用户交互的同时,无须重新编写业务逻辑。
Android 中 MVC 的角色定义如下:
- 模型层(Model):负责数据的管理。针对业务模型,建立的数据结构和相关的类,就可以理解为 Model。Model 是与 View 无关,而与业务相关的。充当模型层的是网络请求部分。
- 视图层(View):负责UI的显示。充当视图层角色的一般采用 XML 文件或者 Kotlin 代码进行界面的描述,也可以使用 JavaScript+HTML 等方式作为 View 层。
- 控制层(Controller):负责逻辑控制。充当逻辑控制层角色的通常在 Activity、Fragment 或者由它们控制的其他业务类中。
MVC 简单来说就是通过 Controller 来操作 Model 层的数据,并且返回给 View 层展示。
Android 中 MVC 的缺点:
- Activity 并不是一个标准的 MVC 模式中的 Controller,它的首要职责是加载应用的布局和初始化用户界面,接收并处理来自用户的操作请求,进而做出响应。随着界面及其逻辑的复杂度不断提升,Activity 类的职责不断增加,以致变得庞大臃肿。
- 由于XML的能力较弱,在实际项目中数据设置一般都是在Activity或Fragment中完成的,因此导致Activity既充当了Controller层又充当了View层,且Controller层需要调用Model层获取数据,从而导致绝大多数的任务都是在Controller层中完成的,这也就使得Controller层不易维护,因为Model层与View层耦合性较高,容易牵一发而动全身,不易开发和维护。
为了解决以上问题,产生了 MVP 以及 MVVM 这两种框架。
备注
参考资料:
《Android Jetpack开发 原理解析与应用实战》