拆分类功能:
UIImageView+WebCache->集成了图片下载
SDWebImageManager->下载管理器
SDWebImageDownloader->下载器(专门负责下载功能)
SDImageCache->负责缓存(内存缓存、磁盘缓存)
SDWebImageManagerDelegate->图片下载完成了
SDWebImageDownloaderDelegate->图片下载完成了
下载流程:
viewController -> UIImageView(setImageWithURL)
-> SDWebImageMangager(downloadWithURL)
-> SDWebImageDownloader(downloadForURL)
-> SDImageCache(缓存)
采用的设计模式:
1: 单例模式
SDWebImageMangager
SDImageCache
2: 外观模式
Manager 管理实际管理了缓存器, 下载器
两个核心角色
角色一: 系统对外统一接口 SDWebImageMangager
角色二: 子系统接口 SDWebImageDownloader, SDImageCache
3:装饰模式
UIImageView (WebCache):OC类扩展
4:代理模式
SDWebImageManagerDelegate、
SDWebImageDownloaderDelegate
模式角色分析:
UIImageView (WebCache)->功能
方法重载:下载图片
占位图片
核心功能:调用了SDWebImageManager
SDWebImageManager
管理器:下载图片
调用缓存器
SDWebImageDownloader
具体下载:downloaderWithURL
SDImageCache
注意:保存图片(key:value)
key->名称(url)
value->图片
磁盘缓存图片名称生成算法->md5算法
注意:缓存读取顺序(最新版本的SDWebImage围绕这个基础思路搭建的)
第一步:内存读取
第二步:磁盘读取
第三步:缓存内存
第四步:网络请求