Univalsal_ImageLoader源码结构与创建者模式 初步小结

原创
2018/09/24 19:02
阅读数 123

最近在回归看Univalsal_ImageLoader源码,本想自己也实现试试写一个,看源码是为了学习看能否使用,助于自己可以写出有自己逻辑结构的代码。

首先我们初始化ImageLoader的配置初始化的时候,就使用到了创建者模式。

ImageLoader的有个核心类是ImageLoaderConfiguration

如上图看ImageLoaderConfiguration结构图,

1、它涵盖了三级缓存、展示设置、任务处理和缓存处理对应的线程池等。建造者模式作用之一,主要是屏蔽各自的每个part或module之间的实现过程,达到各自独立,使用了一个builder内部类进行实现,而给到外层ImageLoaderConfiguration是给予每个所有需要的part引用向外面暴露自己。

 2、而我们往往发现,在ImageLoaderConfiguration里面的属性基本是大部分的引用都是基于接口,认真去读比如MemoryCache的实现有多种实现方式,基于linkHashMap实现的fifo(先进先出)lifo(后进先出)结构、磁盘缓存DiskCache有区分为 有限制缓存大小的缓存实现类、无限制大小的实现类等。通过对builder的可以设置想要的初始化的对应的使用什么类型的内存缓存结构、磁盘缓存等、设置线程池大小等。ImageLoaderConfiguration 里面有个引用DisplayImageOptions又是一个基于创建者模式的实现。作为对于一个小功能模块,封装一个相对独立 的功能实现类,过程封装起来了,需要的我们暴露它的方法、引用等。以后需要改动的时候,我们只需要改里面对应小功能点即可。

    阅读源码多一点,发现越是喜欢设计都是基于接口来作为暴露,接口的实现可以有多重实现,其实这个不就是我们的多态么。

展开阅读全文
加载中
点击引领话题📣 发布并加入讨论🔥
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部