教程希望让新手搭建一个简易的MVP框架,适合不知道从何开始的新手,本篇内容:
MVC和MVP的介绍
关于MVPBuilder
MVPBuilder 是笔者自己编写的一个快速开发教程,它的目的很简单,就是让新手可以在学习的过程中理解编程的思维,能够给读者带来解耦合的思考。这样的项目框架更多地类似于Maven构建工具的思想,约定优于配置。希望大家在开始一个新android项目不知道从何入手时,能够帮到大家。以下是项目的github地址,欢迎大家下载 —— [ MVPBuilder ]
MVC和MVP的简介
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。—— [ MVC ]
MVP全名是Model View Presenter,是模型(model)-视图(view)-控制器(presenter)的缩写,也是一种软件设计典范,笔者主要在android工程中接触和学习到。
上面都是一些理念性的东西,对MVC和MVP的总结理解如下:
二者都有M,V,所以唯一不同的是C和P。在所有的软件系统中,其实都只有三个部分,第一个是用户能够看到的界面,即这里的说的View;第二个是所有软件都会对数据持久化也就是存到文件系统,存到数据库,姑且把Model理解为数据,所以M代表的不仅仅是一个静态的概念;第三个就是业务,是把用户的操作所产生对数据库的改变用程序逻辑编写出来的过程,其实就是两种模式中的C和P。
实践经验不多的同学会有疑问为什么有了MVC还要有MVP?既生瑜何生亮的感觉。
分析
我们一起来模拟场景,假设我们写了个登录页面,那么直接用android提供的mvc模式就是:xml布局文件(View),LoginActivity(Controller),User(Model)。那我们都怎么操作呢?用户操作,数据被改变了,activity响应改变然后执行登录业务,程序中的User数据也被改变了。看起来没什么大问题,那么现在如果是两个人在写这个功能,一个负责页面,一个负责逻辑,好了,两个人都要对activity进行编码,如果这是一个非常复杂的功能和界面,那activity岂不是两行界面代码,又插一段业务代码,然后又一段界面代码!
这就是MVP出现的原因,其实是为了解耦合,你写你的界面,我写我的业务,我不需要知道界面实现的细节,你也不需要知道业务实现的细节。我们只需要互相知道要做什么,对了,就是程序设计里最最核心的思想,抽象。那么我们只需要定义实现的接口名称,我是P你是V,那么你给我一个登录成功刷新界面的接口,我给你一个登录业务的接口(面向接口编程),这样就够了,这..说得那么简单,how?talk is cheap,show me the code!我想你一定是这样想的,继续关注MVPBuilder,希望它能够给入门的朋友带来启发,暂定每周日更新一篇。