• 【原创】下载通用工具“DownLoadNode”系列——2、类设计与使用Demo


    上篇介绍了设计思路,本篇主要介绍类的设计,以及如何使用的Demo。

    一、类的设计

    1.DownloadNodeBase:包含了下载结点需要的通用的属性和方法

    2.LeafDownloadNode:此类继承自DownloadNodeBase,表示下载任务树中的“叶子结点”,负责具体下载事务的处理

    3.LinkDownloadNode:此类继承自DownloadNodeBase,表示下载任务树中的“关联结点”,不负责具体下载事务的处理,而是收集“叶子结点”的工作反馈信息,统计自己负责的任务集的进度情况,并向外界(通常是父节点)发出通知

    下面是类关系图:

    image

    二、使用说明

    下面的图片演示了如何构造1个资源,这个资源含有2个文件

    image

    a)第一个参数是表示用户自定义数据,我这里是用一个字符串简单表示一下。可以是任何类型的数据。

    b)url表示要下载的文件地址,saveto表示下载后保存的文件名

    怎么样,是不是理解了呢.其实很简单,我们先构造了一个表示资源的“连接结点”,然后又构造了2个表示文件的“叶子结点”,再把叶子结点加到连接结点下面,就构成了一个简单的2层关系。

    下面我想强调的是:

    层级关系是可灵活制定的

    所以下面的图片演示了如何把这1个上述类型的资源和一个单独的文件构造成一个特殊的层级关系:

    image

    a)需要下载整个任务树,只需要调用根节点的SpecialRoot.Download()方法即可。是不是很方便呢^_^

    b)如果你只想下载某个子树或者叶子结点,就直接调用它的Download方法吧,所有消息都会自动被每个结点收集。

    三、Demo截图

    下面是我自己的一个Demo的截图,可以看到每个结点的状态和进度都是自动变化的。

    image

    四、Demo与源码下载

    与往常一样,本系列用到的源码和Demo代码下载地址都是公开的,有兴趣的朋友可以点此下载。有什么意见和建议,或者你有更好用的组件,欢迎也和大家进行分享。

  • 相关阅读:
    寒假学习日报29
    寒假学习日报28
    保证多个线程顺序执行
    switchHost本地映射
    Redis 淘汰策略解读
    再过半小时,你就能明白kafka的工作原理了
    Zookeeper用来做什么的,有几种类型的节点
    类加载过程
    REDIS缓存穿透,缓存击穿,缓存雪崩原因+解决方案
    数据库的锁机制及原理
  • 原文地址:https://www.cnblogs.com/wbpmrck/p/2072527.html
Copyright © 2020-2023  润新知