作为码农你应该知道MVC(Model View Control)吧,如果不知道,请自行补脑。MVP(Model View Presenter)是MVC衍生而来的,MVP并不是一个新玩意,很早以前就由某软公司提出,近年来在Android应用开发中越来越多的被提及,越来越重要了。本文简单解介绍MVP的概念、为啥要使用MVP和在Android中如何使用,最后介绍一个Android使用MVP的例子。
MVP,即 Model View Presenter,包含逻辑、视图、presenter(作为视图和逻辑的中间层,暂时找不到一个合适的词来翻译)三个部分。MVP要求显示层和逻辑层分离,View 发生变化时逻辑层(Model)不用改变。
界面需求千变万化,而产品逻辑相对的稳定。这是Android甚至其它移动应用的基本现象,所以逻辑和视图的解藕变得很重要。之前有人问过我MVC在Android中的应用,Activity在是MVC中的哪一个?其实回答这个问题有些尴尬的地方,Activity在Android系统中本来是用来呈现界面的一个组件,而在Android应用开发中又无不兼负着界面跳转和数据访问的职责(很多数据访问逻辑的确是在Activity中发生的),Activity到底是View还是Control还是二者兼具?不好回答。而MVP却很好的解释Android视图和逻辑的解藕。
- presenter
- View
- Model
只负责应用的业务逻辑,例如数据请求或数据处理等,我们可以建一个XxxManager类来负责这层。
说了那么多,其实最重要的还是看Demo,不然都很虚,例子是学习新东西的最好方式。
例子源码地址:https://github.com/liuguangli/androidmvp
使用MVC模式来分离Android应用的界面和业务逻辑不是一件容易的事,MVP在Android应用解藕上却很容易解释。无论使用什么样的模式或方法构建应用,最终的目的都是为了提高代码的可读性、可维护性,冗长难懂的代码可能会让计算机编译执行多耗几毫秒,但是最要命的是解决一个小bug却花上几个小时甚至几天去理清代码来解决。作为开发者我门大部分时间还是耗费在调试、找bug上,而不是编码,至于代码设计,值得花时间去思考。