我是一个Android小白,以下只是我的学习笔记,如有疏漏错误,请大神不吝赐教(我是一个禁不起批评的人,谁批评我,我就骂谁)
1.什么是MVP ?
2.为什么要用MVP ?
3.怎么用MVP ?
为什么我要写上面三个问题呢?因为大概从小学开始,老师就教我们,学习一个新事物的时候,往往从三个方面入手.即是什么? 为什么? 怎么做?
为什么说自己是一个Android小白呢? 因为我前些天写了一个Activity,把数据的请求,解析,界面显示 全部写在里面了.这对于实现的结果没有多大影响.但是,对于这串几千行的代码,我觉得我可能写了假代码.会有谁想看到这样的代码.或者谁能心平气和不在心里暗骂这个垃圾作者的情况下读完这个串长的像裹脚布一样的代码.虽然我当时假装可以让人读懂的加了所谓的注释.但是让我再次看那个代码,我也是拒绝的.所以,有时间还是偷偷改过来,不要被公司发现了,否则被炒了就GG了.
对于一个项目来说,都有界面和数据组成.界面和数据合作共同打造了一款漂亮的APP.那么问题来了,数据何时从何处获取,何时何处与界面融为一体,哇塞,画面感好强.~~~ 额 这个好像是技术博客,不要走歪了. 其实吧我在接触MVP之前,是学习了MVC的,姑且这么说吧.MVC M-Model V-View C-Controller 信手捏来,可是有一个问题,这么完成完整的MVC架构,或者说真正的MVC是什么样子的呢?只是背了MVC的皮毛概念似乎并没有对我的开发之旅有任何的帮助.在各种博客上看了又看,似乎并没有什么进步,终点还是自己没有实践吧. 之前学习Struts2+Spring+Hibernate的时候,习惯性写个DAO层,Service层,Action层,倒是有点MVC的模样.记录下来以后可以当做笑话看~~
MVP 据说是MVC的升级版改良版,作为一个小白,我什么都不知道,吓成一坨兔子不敢说话.但至少我是先接触到MVC的啊 ,说MVC是MVP的前辈不会错的了.
MV不说了,和MVC的一样,那P是什么呢?英文名叫Presenter,中文名叫
嗯,就是这样,我也很绝望啊,让一个英语这么烂的人翻译,只能是这样的结果.但是这并不重要,重要的是知道P的作用相当于C就行了.嗯就是酱紫,也是上面说的数据与界面融为一体的润滑剂~~~Gay里Gay气的...咋润滑的呢?我哪知道,我又没做过,哼!!!!
一个没有框架的软件,做起来,出现的最大问题我猜是维护的问题.上面的例子也是看出维护的问题了.其次在没有Presenter或者Controller的时候,数据界面相互之间绑在一起,没有啥代码可以复用的,除非你认为copy和rename加上修改就叫复用的话,那我就选择沉默羔羊十二式.想了想Java的有点,一处编译,处处运行,这样优良的传统美德都被我这个小白荒废了,感觉自己是个假开发.有了Presenter之后呢,Model和View的之间没有必然联系,Model只知道获取数据,提供数据,View只知道展示数据,不需要管数据从哪儿来,似乎是更符合当代社会的工作模式,分工明确嘛.很好理解.
以我的理解来说:View跟Presenter说,我想要这个数据,Presenter就派Model去拿数据了,Model拿完数据了,把数据复制了一份给Presenter,并告诉他喏 数据给你,钱给我,一手交钱一手交货,于是一场不可告人的PY就这样完成了,Presenter拿到数据很开心的给了View,讨她欢心啊,要不然会睡沙发的~~~完整的PY就以这样的流程走完了.谈实现的话,MVP我猜是面向接口的编程方式.Google官方是给了一个Demo的https://github.com/googlesamples/android-architecture
嗯,就是这样.
嗯,学习的时候,偷偷在GitHub上找了一份源码
https://github.com/ganglea/TBook 虽然我不知道它好不好,但是他打开了我学习MVP的脑洞
又是接触到了一个新事物,开心哈哈哈哈
好好学习Android,不好吗?加油!!!!! 有人跟我说感叹号是无语的意思~~~类似于..... 我感觉我的智商受到了侮辱.
我只是 个Android小白,我能怎么办,我也很绝望啊