【原创】下载通用工具“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代码下载地址都是公开的,有兴趣的朋友可以点此下载。有什么意见和建议,或者你有更好用的组件,欢迎也和大家进行分享。

原文地址:https://www.cnblogs.com/wbpmrck/p/2072527.html