QuickDown用例分析
1. QuickDown下载过程用例分析:
a) 用户选取一个URL,添加到QuickDown中
b) QD为该URL建立一个下载对象DownObj
c) DownObj为该任务做如下序列化工作:
i. 建立数据库项目,用于记录任务的当前状态
ii. 建立一个线程,向下载服务器得到下载文件的属性信息,成功得到文件信息后,把文件属性信息通知UI,并更新数据库,然后启动第二个下载线程,开始本线程的下载工作
iii. 下载线程二试图连接服务器,并判断服务器是否支持多线程下载,如连接成功,则启动余下的所有线程(需启动几个线程要看用户的选择)
iv. 根据文件大小和下载线程的数目,决定每个线程需要下载的文件范围
v. 某个线程做完本线程的下载任务后,向后搜索,看是否有线程没有连接上,如果有,移动下载点,继续下载其它范围的文件数据
d) 系统中的数据库类是一个全局对象,所有下载任务直接和它通讯,定期更新数据库中相关记录的信息
e) 每个下载任务有一个文件操作对象,用户向下载文件中写入数据,它提供互斥操作,以便顺序地把下载数据写入文件。
f) 文件下载完毕,更新数据库,通知UI
g) UI定期查看数据库,刷新界面显示
注:如果用户中途停止下载,并更改下载的线程数,通过一定的算法,重新分配各线程下载的范围