微信号:appjiagou

介绍:分享最有价值的APP技术干货文章,做一个有逼格的APP架构师,拒绝平庸,打造最有价值的APP社区!

Retrofit框架设计-构建者+工厂模式高级应用

2017-09-19 07:00 APP架构师




第一部分:Retrofit框架设计->构建者模式

1、什么是构建者模式?

将构建过程和表示过程进行分离。

 2、构建者模式->角色划分?

角色一:抽象Builder类(抽象产品组装)

角色二:具体产品组装类

角色三:具体产品

角色四:统一组装

 3、Retrofit框架角色划分?

案例:Retrofit框架进行分析?

角色一(角色一和角色二进行了合并):Retrofit类中内部类->Builder类

角色二:具体产品->Retrofit类

角色三:统一组装(忽略)->一般情况下就是客户端

4、应用构建者模式?

第一步:实现构建者模式->Retrofit框架的角色一

Retrofit类中内部类->Builder类

产品类:D_Retrofit

 

第二步:实现产品类,增加了动态代理

 

第三步:分析构建者模式好处?

初步分析,构建者构建这个对象,并且给这个对象设置默认参数,这个构建过程客户端使用者不需要知道(封装)



第二部分:Retrofit框架设计->工厂模式


内容一:分析工厂模式->种类?

    ·第一类:简单工厂

     定义:只有一个工厂类->创建一种对象

     例如:BitmapFactory->Bitmap

    ·第二类:工厂方法

     针对是一类对象抽象(一种:抽象)

    ·第一类:抽象工厂

     针对是多种类对象抽象(多种:抽象)


内容二:工厂模式->实现一个案例?

      ·需求:进行多种地图SDK切换(两个地图:百度地图、高德地图)

       ·第一步:集成百度地图

      · 第二步:分析问题?


提问:如果我现在要去切换地图?->一键切换到高德地图,怎么办?


问题:SDK和项目代码耦合,你没法切换


方案:抽象设计->对我们的View进行抽象


定义:IMapView接口,因为百度地图、高德地图,都会存在MapView->直接将MapView进行高度抽象->抽象为一个公共统一接口。


       ·第三步:集成高德地图

       ·第四步:分析问题?

问题:没发实现一键切换,客户端创建实现类?


方案:工厂模式->工厂方法模式


       ·第五步:分析问题?

        抽象工厂模式

        多种对象抽象


        地图案例:创建MapView(一个模块)

        多个模块:定位模块、导航模块、全景图模块等等...

        抽象工厂完成


        ·第六步:总结

        工厂方法(一条流水线)

        抽象工厂(多条流水线)



第三部分


想要成为技术大神

往下看

↓↓



▼点击下方“阅读原文”也可报名参加


 
APP架构师 更多文章 Android官方架构组件指南 安卓高级进阶视频分享 自定义view | 强大的密码输入框 Android 高仿懂球帝我是教练效果 【实战总结】帧动画调优实践
猜您喜欢 治污女工程师走近垃圾写代码,监督2.5万家企业排污 ☞【观点】深解数据驱动:从过去,到未来 互联网+体育 | 2015年基础研究体育专题报告 资源丨打造一款属于自己的手机安全卫士(视频资源) 一个神奇的脚本,一键运行各类程序(for Notepad++)