组件化封装思想实战Android App总结七App公共模块之视频SDK模块开发六API层讲解及封装

23 篇文章 0 订阅

一、
1、需要封装的内容

只封装这些东西,需要对它再进行一层封装吗?其实业务逻辑层包含了许多自己的逻辑,有很多的方法和逻辑是不需要调用者知道的,所以通过API层再对它进行包装给外部而隐藏掉外部不关心的方法或者接口,这样对调用者来说也省去了学习的成本。

 

2、

 

3、友盟的外观模式

下图是友盟统计下的各个模块。友盟统计下有很多个子模块,如果每个模块都有一个文档教你如何去使用,且每个模块都有一个类教你去使用每个模块的功能,那接口将会非常多,而且第三方调用起来,学习成本也非常高。而友盟是如何做的呢?它把各个模块都集中到了MobclickAgent这个类中,所以在使用过程中不关心是友盟统计子模块的内容、友盟推送子模块还是友盟分享子模块的内容,统一的入口都是MobclickAgent,只需要调用这个类中的各个方法,而它会根据你调用方法的不同,再去调用各个子模块的内容,这样对开发者来说只需要熟悉MobclickAgent中的各个Api和接口即可。而这就是典型的外观模式的使用。

 

注:这个类主要用到了外观模式,而且外观模式是在封装SDK的过程中一定会用到的一个模式。

 

 

 

4、自己的外观模式

 

三个黄色的矩形模块分别是视频播放模块(customvideoview,完成视频播放的功能)、业务处理模块(完成所有事件的处理以及功能,比如小屏到大屏和大屏到小屏播放)、未来要扩展的其它模块,这些都通过VideoAdContext这个接口来对外暴露对应的功能即可,这样调用者就不需要了解内部有哪些模块,及每个模块是干什么用的,只需要了解VideoAdContext这个外观类对外提供了哪些接口以及每个接口分别是做什么用的。做SDK和做app最大的区别就是SDK要简单、好用,要求封装性要非常地高,这样能降低调用者的耦合性。

5、

 

 

6、

 

VideoAdContext 实现了接口VideoAdSlot.AdSDKSlotListener接口,接口回调的典型使用方式。接着就是定义一些成员变量,以及逻辑层VideoAdSlot mAdSlot,而构造方法就是从外部接收要显示的位置以及数据(没有让外部传入json而是传入字符串是因为字符串是基本类型的数据结构,这样通用性更强,外部调用代价更小),然后就可以调用load()调用真正的业务逻辑层。

 

 

updateVideoInScrollView()没有实现任何实际功能,只是调用逻辑层实现功能。所以Api层并不完成任何实际功能,只是对外提供接口,调用逻辑层来完成相应功能。

二、在代码中调用

1、在adapter中创建视频播放模块

 

 

2、创建视频播放VideoAdContext,就是Api层

 

3、adapter提供updateAdInScrollView()方法,这个方法就是调用api层的方法

 

4、在adapter中为listview添加滑动监听的方法,通过onScroll()中调用adapter.updateAdInScrollView()方法最终调用的是自定义的updateAdInScrollView()方法,而updateAdInScrollView()最终调用的是sdk业务逻辑层的updateVideoInScrollView()方法

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值