MVP设计模式初步学习
来源:互联网 发布:地税局数据采集手续 编辑:程序博客网 时间:2024/06/03 13:05
本问出自:http://blog.csdn.net/dt235201314/article/details/52048608
一丶百度百科
MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
MVC和MVP的区别?
作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller)来进行的,所有的交互都发生在Presenter内部,而在MVC中View会直接从Model中读取数据而不是通过 Controller。
然后,产品狗原封不动地转达了给程序猿,程序猿默默地说了一句:“傻X,有病”。
当然产品狗也不会这么傻,它当然要在客户面前夸他,于是在电话里头说:“我们的工作人员,对此表示有挑战性,但是他们很乐意。”
于是新需求就来了,最终苦逼的还是程序猿。
终于,程序猿受不了了,辞职了,但是又来了一批新的,需求还是需求,并不会因为人不同了,就推掉这单生意(重构项目)。
view(客户),contorler(产品狗),model(程序猿)
有一天,客户找到了产品狗和程序猿说:“我要开发一个像微信一样的App”
程序猿默默地说了一句:“傻X,有病”。
嗯,打起来了,项目没了。
1.view和model相互不认识(解耦),并不会因为model不一样了,而影响了view,反过来也一样。那么model什么时候会变呢?例如,老子原来用的是Volley网络框架,但是我现在要换成OKhttp。没关系,我只需改动model即可。
2.model是面向接口文档编程的,view是面向设计图编程的,而presenter是负责协调的,这样就可以并行开发了。
3.测试,因为是view和model不认识(解耦),那么就可以单独地对model进行测试,验证它的准确性。做好了view,真机调试,又可以发朋友圈了。最后用presenter连起来,如果测试得好,Bug也会少很多。
4.做不好不用背锅,还可以多踩一脚(O(∩_∩)O~)。我做model的,数据给你了,你显示那么丑......这是一个后台跟App的故事。
5.presenter(产品狗),可以同时面对多个view(客户),做更多的事情(累死更多的程序猿)。
MVP的缺点
1.presenter负责逻辑,代码会多。(产品狗确实挺累的)
2.写得很累,明明view跟model可以直接相连,非要跟presenter联系,可能在传递时出现Bug。(明明程序猿可以跟客户面对面沟通,但是经过了产品狗,回来的需求就不一样了)
MVP开发攻略套路
model层
这是我开发的套路,希望你们喜欢。正常情况下,3天就能完成所有的接口文档对应的model。而在做model的时候,面对的是接口文档,没有比这个东西更接近需求了,因此,你做完之后会更加明白这个项目。
用Rxjava+Retrofit是什么体验
view层
简单但是暴力。我还有隆重地为大家推荐几款插件。
1.SelectorChapek for Android(自动生成Selector的XML文件),再也不要考虑那些乱七八糟的press,focus,normal
2.jimu Mirror(不需要写代码,就能在真机显示布局,包括列表),神器!加快了朕发朋友圈的速度。
3.butterknife(依赖注入库,自动注解布局中带@+id的控件),用完就更model的同学说,真慢!
4.Android studio自带的Get,Set生成器。
presenter层
Sept1
根据model的所需参数创建外部调用接口(presenter的方法接口)
Sept2
实现Sept1中的接口和model层提供的回调接口
Sept3
根据业务逻辑,调用view层提供的方法。
Android官方MVP架构示例项目解析
Google Android MVP Pattern 知识整理
Android MVP模式 简单易懂的介绍方式
如何设计MVP中的Presentation层
- MVP设计模式初步学习
- Android设计模式-MVP模式初步摸索
- Android MVP模式初步认识
- 《大话设计模式》学习总结,初步~
- 关于设计模式的初步学习
- MVP设计模式-1
- MVP设计模式
- MVP设计模式思路
- Android MVP 设计模式
- MVP设计模式
- 理解MVP设计模式
- MVP设计模式
- Android: MVP设计模式
- MVP设计模式
- 设计模式 之 MVP
- Android MVP 设计模式
- MVP设计模式介绍
- MVP 设计模式
- NSAttributedString——为Label设置富文本
- Git学习(2)
- Select()函数的介绍
- Linux的发展史
- hdoj5301
- MVP设计模式初步学习
- Java主要特性
- UVA 10123(欧拉定理 + 大数类)
- sdut oj1138 数据结构上机测试2-1:单链表操作A
- UIsearchBar的placeholder字体颜色和大小
- IPhone 自定义 UITableViewCell 行缩进
- 转载 感谢原作者 矩阵分解在推荐系统中的应用:NMF和经典SVD实战
- NOI 2016
- tjut 4622