一、背景
相信大家对于mvc这种开发模式都不陌生,无论是java开发,php还是Android都很常用,后来针对于Android网上又出来了一种mvp模式,这又是什么鬼?都知道mvp是从mvc进化来的,而且让model和view解耦,具体他是怎么做的还是值得去研究一下的,下面说一说自己对于mvp模式的理解
二、比较
什么是mvc?
model:实体层,对应的就是我们的数据层和业务逻辑
view:视图层,对应的是Android中的布局文件
controler:控制层,可以理解为activity,处理用户交互的
其实这样诈看起来条例非常清晰,其实做过开发的人都会有这样的感觉,activity在实际开发过程中负责的内容很多,布局的处理和用户的交互等,开起来activity什么都管,而view和model却是特别轻量,有点失去他本来的意义
再看mvp
model:还是实体层,与mvc中一样
view:对应activity,绘制布局与用户交互
presenter:这一层负责model数据层和view层的交互
这么看起来也挺清晰的,而且他在实际开发中代码更加的清晰
下边上图比较一下两者
从图上可以感觉到mvp确实是做到了model与view的解耦
mvp具体实现
1.接口,mvp中每一层都会抽象出接口,然后通过具体的实现类实现具体代码
2.view层接口IVew的实现类由activity实现,Model层接口IModel由model数据模型实现(做数据的处理,以及一些业务逻辑),Presenter接口,做model与view的交互
3.Presenter中拿到model的接口及其实现类,拿到view层接口,做完数据处理后通过回调到view的具体实现类activity实现数据的展示,而activity中也会拿到presenter的接口,调用presenter,通过其具体实现类处理model和view接口的逻辑
这个具体过程没把代码贴出来,只是用语言做了描述,可能看起来会比较费劲,具体代码后续再贴出来
分析
整体这么一看每个activity都会对应一个接口,然后对应一个presenter和model,这样项目中会有很多的类,也算之mvp的弊端之一吧,不过这样写的代码结构清晰明了,不管是以后维护或者其他人看代码都会相对轻松,便于代码的管理
三、小结
对于mvp的理解还不是很到位,毕竟项目中没有真正的用到,只是自己敲了敲例子玩,以后还有待在项目中实际玩玩才会更能理解
ps:今天微软全球副总裁来我司做交流,听了听他讲的一些未来趋势,感觉很有用,分享给大家
主要讲了三点:
1.移动互联网:已经渐渐出现下滑趋势,但是移动互联网对人们产生的影响是全所未有的,而且还给微软带来了很大的冲击
2.大数据:未来将是大数据的时代,想亚马逊,阿里这种电商掌握着数据,现在毕竟是数据的时代,也可以说在一定程度上掌握着以后,像这种比较大的电商在未来会很有竞争力,这也是他来我司交流学习合作的重要原因之一
3.人工智能:这也是微软现在着重发展方向,人工智能涉及我们生活的方方面面,不仅仅是现在狭义的智能手机智能家居这些东西,也包括我们平时用的东西,比如说我们用的水杯,书包,笔,桌子等等,在这方面微软现阶段一直主推AR,与我们现在了解比较多的VR还不同,AR是混合虚拟现实,是将真实环境和虚拟结合起来的,而VR是纯虚拟现实,相信微软这方面已经走在了世界的前列。
预测未来最好的方式就是创造未来
以上就是交流的大概内容,具体细节就不做描述了,听一听感觉瞬间脑洞大开