zoukankan      html  css  js  c++  java
  • 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围绕这个基础思路搭建的)

          第一步:内存读取

          第二步:磁盘读取

          第三步:缓存内存

          第四步:网络请求

     

     

  • 相关阅读:
    ARM六种寻址方式的汇编实现
    生产者消费者
    哲学家问题
    linux进程的问题
    linux信号量使用
    linux进程创建
    Ubuntu下编写C语言程序
    Android使用图表库简单教程
    不需要SDK调用图灵机器人的方法
    robotframework接口测试实例
  • 原文地址:https://www.cnblogs.com/jiefangzhe/p/13024284.html
Copyright © 2011-2022 走看看