文档章节

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

DannyCoder
 DannyCoder
发布于 09/24 19:02
字数 579
阅读 4
收藏 0

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

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

ImageLoader的有个核心类是ImageLoaderConfiguration

如上图看ImageLoaderConfiguration结构图,

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

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

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

© 著作权归作者所有

共有 人打赏支持
DannyCoder
粉丝 2
博文 68
码字总数 36116
作品 0
广州
程序员
私信 提问
ImageLoader 使用记录

这个控件的使用方法可以参考:http://www.cnblogs.com/ruiati/p/3930732.html 这个地址。里面有非常详细的配置,包括怎么让imageloader引用本地drawable、assets、sd卡之类的。有了这个骚年你...

末日__
2015/12/11
231
0
Android源码设计模式解析与实战(三)

Builder模式介绍 Builder模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程。该模式是为了将构建复杂对象的过程和它的...

xingjm8511
2016/12/24
6
0
Android中的MVP模式初步使用

之前在做javaweb的项目的时候,最开始接触的mvc结构作为做根本的结构,在Android项目中 Google本身设计的Android项目就是一个mvc的结构 model(模型),view(视图),Control(控制),Android的布局全...

我家有宝
2016/08/31
89
0
对于设计模式最近观感的浅薄理解

最近比较多翻阅设计模式,设计模式平时工作中,我们可能会经常见到有,比如单例模式、观察者模式、模板模式,构建者模式,像比如之前使用的线程池内部使用的命令模式等,看的模式越多,越发发...

DannyCoder
10/02
0
0
新书预告 :《Struts2技术内幕》 —— Struts2源码研究和Web开发研究

http://www.iteye.com/topic/1117044 简单做一个新书预告,我写的《Struts2技术内幕》将在下个月问世。 这本书应该是国内比较少见的以研究Struts2的源码为主要目标的技术书籍。源码研究类的书...

ddatsh
2011/10/26
1K
8

没有更多内容

加载失败,请刷新页面

加载更多

mysql密码重置

方法一: 在my.ini的[mysqld]字段加入: skip-grant-tables 重启mysql服务,这时的mysql不需要密码即可登录数据库 然后进入mysql mysql>use mysql; mysql>更新 update user set password=pas...

architect刘源源
16分钟前
3
1
SpringBoot + Mybatis 配置多数据源(Srping boot 二)

前置条件,你已经配置好spring boot+mybatis,可以参考之前的博客 实现逻辑通过注解+aop切面编程来动态更新datasource 第一步,配置多个DataSource server: port: 8080freezing: ...

小海bug
29分钟前
12
0
连续潜在变量---概率PCA

最大似然PCA 用于PCA的EM算法 贝叶斯PCA 因子分解

中国龙-扬科
35分钟前
5
0
Mac 安装redis 及 redis desktop manager

1.安装redis 1.1 下载地址: http://download.redis.io/releases/ 1.2 本地新建个redis文件夹 1.3 切换到redis 安装下:cd /Users/用户名/Documents/redis/redis-3.2.5 1.4 make install 1.5......

qimh
40分钟前
3
0
Caffe(二)-Python-自定义网络

这里我们用一个例子先来体验一下 首先定义一下我们的环境变量 $PYTHONPATH,我这儿是Windows开发环境,至于Windows Caffe怎么编译由读者自己下去搞定 我使用的控制台是 Windows PowerShell 添...

Pulsar-V
今天
12
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部