SDWebImage源码分析(一)

  拆分类功能:

      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围绕这个基础思路搭建的)

      第一步:内存读取

      第二步:磁盘读取

      第三步:缓存内存

      第四步:网络请求

 

 

原文地址:https://www.cnblogs.com/jiefangzhe/p/13024284.html