我认可的MVC流程图
MVC的本质就是按照UI逻辑、业务逻辑、数据逻辑不同的职责分三大模块,彼此分工。
在Android中,view一般使用xml进行编写,但xml的能力不全面,需要Activity进行一些UI逻辑的编写,因而MVC中的V即为xml+Activity。数据层,在Android中负责网络请求和数据库操作,并向外暴露接口。Controller是争议比较多的写法:一种是直接把Activity当成Controller;一种是独立出Controller类,进行逻辑分离。比较符合MVC思想的笔者认为是后者。因为前者直接在Activity中进行书写业务逻辑就会和UI逻辑混合在一起了,达不到模块分工的效果。
mvc的缺陷
MVC可能是我们第一次开发安卓的时候就会使用的架构模式。直接在Activity中书写业务逻辑,只抽离出Model层。(笔者第一次开发时连Model层都没抽离,全部在Activity中写,一千多行的MainActivity)这样看起来很美好,但是有严重的问题。MVC的核心就是按照职责分离代码。但几乎所有的业务逻辑代码都在controller中,当项目越来越大时会导致controller极度臃肿,难以维护。view与model直接依赖,模块之间依赖不单一,view因直接通过model获取数据,不可避免的会耦合一些业务代码。
几乎所有的业务逻辑代码都在controller中进行,会导致非常臃肿,降低项目的可测试性与可维护性。
view直接持有controller和model实例,不同职责的代码进行耦合,导致代码耦合性高,模块分工不清晰。
MVC好处
简单。他不需要写很多的代码来让代码解耦,这在小型项目非常有用。小型项目总体的代码就不多,所以这样可以提高开发效率。
参考文章1 上面内容基本上就是这篇文章的了,mvc资料现在太多了,没必要继续写,整理下网上现有资料即可。
参考文章2 这篇文章把model移到controller中,严格来说,是mvp
参考文章
参考示例