专栏名称: 程序员技术
最有影响力的程序员自媒体,关注程序员相关话题:程序人生、IT技术、IT职场、学习资源等。
目录
相关文章推荐
51好读  ›  专栏  ›  程序员技术

年薪30万必备开发技能!

程序员技术  · 公众号  · 程序员  · 2017-10-01 19:01

正文

请到「今天看啥」查看全文


点击上方“ 程序员共读 ”,选择“置顶公众号”

关键时刻,第一时间送达!


第一部分:什么是MVP?什么是MVC?


1、什么是MVP?

M:数据层(数据库、网络、文件存储等等...)

V:View和Activity和Fragment以及它们的子类

P:中介->Presenter(作用:将M层数据和UI层进行关联和交互中介)


2、什么是MVC?

M:单纯Model(Java Bean对象)

V:View以及子类

C:Fragment和Activity以及子类



第二部分:开始进行MVP搭建


内容一:MVP入门?

·第一步:看一个基本案例?->普通代码实现

·第二步:MVP实现->简单案例->分层次设计

· 第三步:MVP实现->优化->优化第1步->方法绑定


分析问题 :因为当我们的Activity关闭的时候,但是网络请求还正在进行,然而我们希望是不要刷新UI了,因为销毁了,解除UI层和数据层关联?


解决方案 :方法绑定(绑定、解绑)

attachView->绑定

detachView->解绑



·第四步:MVP实现->优化->优化第2步->抽象


分析问题 :现在写一个功能,你觉没什么,但是如果我写了20个类(写了100个类),那么你是不是要绑定(解除绑定)100次?会想死。目的就是为了不需要这么麻烦,统一管理即可(统一绑定)


解决方案 :抽象类(抽象类->抽取)->BasePresenter



·第五步:MVP实现->优化->优化第3步->BaseView解决


分析问题 :BasePresenter类型类死了,如果你有很多的模块,那么没发抽象。然而希望动态。


解决方案 :通过BaseView解决。成立



·第六步:MVP实现->优化->优化第4步->泛型设计


分析问题 :每一次强制类型转换,想死,一个类还好,100个类,强制类型转换100次。


解决方案 :泛型设计



·第七步:MVP实现->优化->优化第5步->抽象类BaseActivity->具体实现


分析问题 :现在有一个Activity你需要绑定,还好,如果我有30个Activity,50个Fragment,怎么办?代码冗余?


解决方案 :抽象类->抽象出绑定和解除绑定



·第八步:MVP实现->优化->优化第6步->BaseActivity中抽象->抽象实现(BasePresneter和BaseView)


分析问题 :父类BaseActivity写死了,还是没有满足要求?只能够用LoginPresenter_6,然而我们的目的是能够兼容所有的模块


解决方案 :抽象实现(BasePresneter和BaseView)


第二步:MVP进阶?


内容二:MVP进阶?


·第九步:MVP实现->优化->优化第8步->Fragment登录功能


分析问题 :对Fragment进行操作(Fragment抽象)


解决方案 :抽象



·第十步:MVP实现->优化->优化第9步—>Fragment抽象


分析问题 :对Fragment进行操作(Fragment抽象)


解决方案 :抽象->泛型设计



·第十一步:MVP实现->优化->优化第10步->针对LinearLayout、Button集成MVP

需求:集成->实现登录功能



·第十二步:MVP实现->优化->优化第11步->抽象为一个类


分析问题: 每一个模块基类都需要绑定和解除绑定,很多代码冗余。


解决方案 :抽象一下(抽象为一个类)



·第十三步:MVP实现->优化->优化第12步


分析问题:能够满足开发要求?针对Activity做一些处理,生命周期中控制(数据缓存、状态处理)针对Fragment做一些处理,生命周期->MVP框架进行缓存?


Activity、Fragment、View等等...处理是不一样,然而我们之前的抽象没发满足要求


解决方案:针对不同模块,针对性的处理->代理模式



代理一:

代理->针对的是->MVP绑定和解绑

分析角色划分?


目标接口 :绑定和解除绑定回调接口(MvpCallback)


目标对象 :具体实现(ActivityCallbackImpl、FragmentCallbackImpl等等...)->Activity实现->MvpActivity


分析: 创建presenter、创建view等等...


代理对象: 代理实现(MvpCallbackProxy)


代理二:

代理->针对的是->Activity整体代理->生命周期代理


分析角色划分?


目标接口:ActivityMvpDelegate

目标对象:ActivityMvpDelegateImpl

代理对象:MvpActivity(Activity)


功能实现:

第一个部分:绑定和解绑->目标对象(生命周期)


第二个部分:实现MVP绑定和解绑->目标对象(MvpActivity)


第三步部分:测试

  • 来自: Android开发中文站

  • 程序 员共读 整理发布,转载请联系作者获得授权

【点击成为安卓大神】







请到「今天看啥」查看全文


推荐文章
鲁中晨报  ·  【曝光】一位企业老板不堪的日记
8 年前
健康与养身  ·  感谢今生遇上你
8 年前