【原创】下载通用工具“DownLoadNode”系列——2、类设计与使用Demo
2011-06-04 11:09 刺客之家 阅读(1335) 评论(4) 编辑 收藏 举报上篇介绍了设计思路,本篇主要介绍类的设计,以及如何使用的Demo。
一、类的设计
1.DownloadNodeBase:包含了下载结点需要的通用的属性和方法
2.LeafDownloadNode:此类继承自DownloadNodeBase,表示下载任务树中的“叶子结点”,负责具体下载事务的处理
3.LinkDownloadNode:此类继承自DownloadNodeBase,表示下载任务树中的“关联结点”,不负责具体下载事务的处理,而是收集“叶子结点”的工作反馈信息,统计自己负责的任务集的进度情况,并向外界(通常是父节点)发出通知
下面是类关系图:
二、使用说明
下面的图片演示了如何构造1个资源,这个资源含有2个文件
a)第一个参数是表示用户自定义数据,我这里是用一个字符串简单表示一下。可以是任何类型的数据。
b)url表示要下载的文件地址,saveto表示下载后保存的文件名
怎么样,是不是理解了呢.其实很简单,我们先构造了一个表示资源的“连接结点”,然后又构造了2个表示文件的“叶子结点”,再把叶子结点加到连接结点下面,就构成了一个简单的2层关系。
下面我想强调的是:
层级关系是可灵活制定的
所以下面的图片演示了如何把这1个上述类型的资源和一个单独的文件构造成一个特殊的层级关系:
a)需要下载整个任务树,只需要调用根节点的SpecialRoot.Download()方法即可。是不是很方便呢^_^
b)如果你只想下载某个子树或者叶子结点,就直接调用它的Download方法吧,所有消息都会自动被每个结点收集。
三、Demo截图
下面是我自己的一个Demo的截图,可以看到每个结点的状态和进度都是自动变化的。
四、Demo与源码下载
与往常一样,本系列用到的源码和Demo代码下载地址都是公开的,有兴趣的朋友可以点此下载。有什么意见和建议,或者你有更好用的组件,欢迎也和大家进行分享。