第二周(下)

我刚又回过头来看了下上周的内容,上周是用自带的jdbctemplate 而且关键是还要在xml中进行配置各种dao我主要嫌这个麻烦,而且貌似里面的各种增删改查得自己写sql就比较麻烦。而这周的采用注解的方式可以自动建表,而且通过配置对其进行了封装,简化了很多操作。那么我又想到了最新的jpa是个啥玩意呢,该怎么用呢,还有是不是应该有模板什么的能一键生成增删改查呢?这个留到后面再说 我已经完成了后台,并新增了一个登录接口和注册接口目前自测OK。

那么现在开始客户端。先前就说了会采用mvp+retrofit+rxjava的方式。那么我先来回顾下以前我遇到的项目中数据流怎么操作的

1.我最早的项目是用httpclient封装后 继承统一接口回调的方式来实现的,通过每个activity里面写回调

2.通过传入handler配合intentservice或者线程等

3.eventbus(优点 任意地方 随时调用 缺点管理麻烦)

4.就是今天我想着重介绍的这种模式。

上面几种的传统方式 代码量少 但逻辑复杂起来也是挺复杂的,虽然我以前也会把公共方法抽出来,但有的时候写写还是挺乱的。而且有很多操作是在view里面 然后调其他公共类里面的方法去操控数据库啊 做处理啊 最后展示的这种方式。其实就是传统的MVC,即Model控制view 当数据Model发生变化 回给activity来让其改变 activity即是view 而view中又能控制control即我们各个处理数据的逻辑,control又能控制model的改变的这样一个过程。

那MVP呢简而言之 就是view和model做了分离 统一来由Presenter来进行双向控制

那么究竟是如何做到的呢?Presenter以下简称P 常用做法是往其中注入model 再暴露接口给view继承以便通知view即activity对应做出更改。简单来说就是这么简单的啊,没有任何其他的复杂难度,但是为什么还要用一个中间组件contact来进行关联呢?这么做的好处是什么呢?官方写的是:使用契约类来统一管理view与presenter的所有的接口,这种方式使得view与presenter中有哪些功能,一目了然,维护起来也很方便。可这么做的缺点就是对应任意一个类 复用好像就很困难了,不管是采用设置多个presenter还是或者采用接口继承的方式 两个页面 除非用接口的方式可插拔 不然我觉得还是挺困难的。

目前大部分都市采用抽象类 写base 然后继承。我看了一些封装,目前使用的是android fire 开源的这种。分析了其中的流程如下,如有不对的可以提醒我。传统做法presenter在onresume里面 attach 在ondestroy中detach 可以防止内存泄露。这里面他是这么封装的

他这么封装 是可以兼容传统app和mvp的 如果你不想使用mvp模式 直接继承base后面不带泛型自然tutils取不到对应参数就不会给P赋值context,给P赋值context我想也是为了更方便的操纵view吧。那么究竟申明了activity中的p和model后他们是怎么关联的,我们往下看。

通过initpresenter方法,mPresenter.setVM(this,mModel);我们给P设置了这两个变量。那view以及数据的变化呢,难道设了这两个他们就关联了?这个时候RxJava隆重登场。

Rxjava其实就是个观察者模式。里面obsever为观察者,obervaral为被观察者,由被观察者注册观察者,然后当被观察者有变化就可以发送onnext或者自定义事件来通知观察者来进行改变。

这个里面谁是被观察者,谁是观察者呢?自然数据model是被观察者,Presenter是观察者,那么如何把model变成obervable把Presenter变成obersver呢,contact的作用就来了!


contact直接给你强制说了 model的返回是啥  view即activity中需要复写的方法是啥 以及P中要对应操作是啥。但是还是没有看到啥时候关联二者的 继续往下看具体实现。



这一下是否明白了呢,原来P中在实现各种操作的时候就用rxjava对2者进行了关联 只要数据发生了变化,就可以在回调中调用view即对应activity中的view发生变化 ,刚好retrofit可以直接将返回的结果自动转换成oberservble被观察者。

Rxjava还有个好处就是比如回给你的是个字符串你可以转化为对象 通过map或者转化城任意你需要的东西,而flatmap则可以一个Observral变为另一个oberserval 总之给人的感觉就是方便,框架介绍完了,本周的学习内容到此结束。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 201,784评论 5 474
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,745评论 2 378
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 148,702评论 0 335
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,229评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,245评论 5 363
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,376评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,798评论 3 393
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,471评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,655评论 1 295
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,485评论 2 318
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,535评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,235评论 3 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,793评论 3 304
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,863评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,096评论 1 258
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,654评论 2 348
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,233评论 2 341

推荐阅读更多精彩内容