代码改变世界

新浪读书下载器 + yy

2008-12-14 20:58  hbb  阅读(1428)  评论(0)    收藏  举报

做了一个bug乱飞的新浪读书下载器。用了传说中的puremvc和flex。

其实刚开始想的很简单的,就是读一下页面源文件分析一下,然后循环到结束。可是很残念的是,读页面源文件的失败率很高,要一直守着空页面傻等也不好,所以就想想做点UI上去,结果就用了传说中的两样东西...orz

嗯。。。说flex是传说中的,是因为我一直不太喜欢flex(! ~_~),总感觉他把劲使在了人家html+css无敌了几十年的东西上。
然后偷偷摸摸的用了bit-101的minimalcomps来做UI,结果残念。最大的一个弊病是没有排版,缺省情况下嵌入了字体,所以还不支持中文...
回头继续用flex,瞬间就搞好了几个components。于是感叹flex还真是强大呀 >w<b。
转念想想,要是把flex仅当作flashplayer上的一个排版超牛x的库,那其实像我这种不会css的人还是挺喜欢用的。只是这个库好大好大好大...

接着是puremvc,噢,这个可是标准传说中的东西。mvc,我研究了好久,一直处于外围观察阶段,未敢入雷池一步。这次总算深入作战了。
早在几个月前,做项目的时候,就自己胡乱用observer模式暗爽了一把,但因为只有mv,没有c,结果代码还是耦合的很厉害。
这次用下来,结果好多了,基本v那边想怎么来就怎么来,从minimalcomps换到flex,真是一点劲都没费,m、c那边改都没改。
就是一点,mvc之间的交互过程一定得弄张表列出来,否则时间一过,连个鸟的记不得了。

所以,我这边就记一下,省的到时候忘了。

notification
 START_UP
 GET_BOOK_COMPLETE
 GET_CATALOG
 GET_CHAPTER
 DOWNLOAD_ALL

 GET_CATALOG_COMPLETE
 GET_CATALOG_FAILED
 GET_CHAPTER_COMPLETE
 GET_CHAPTER_FAILED

view
 ApplicationMediator => [START_UP]
 DownloadListMediator <= [GET_CATALOG, GET_CATALOG_COMPLETE, GET_CHAPTER_COMPLETE]
 NavigationMediator <= [GET_CATALOG, GET_BOOK_COMPLETE, GET_CATALOG_COMPLETE, GET_CATALOG_FAILED]
=> [GET_CATALOG(String), DOWNLOAD_ALL]

mode
 CatalogProxy => [GET_CATALOG_COMPLETE(Vector), GET_CATALOG_FAILED]
 ChaptersProxy => [GET_CHAPTER_COMPLETE(VO), GET_CHAPTER_FAILED(VO), GET_BOOK_COMPLETE]

control
 DownloadBookCommand <= DOWNLOAD_ALL
 GetCatalogCommand <= GET_CATALOG
 GetChapterPrepCommand <= GET_CATALOG_COMPLETE
 StartUpCommand { ModelPrepCommand, ViewPrepCommand } <= START_UP


这边有个疑问,就是在mode发送通知出去后,相应要改变view的状态。此时,到底是view提供api由control接受通知来改变好呢,还是view接受该通知自己改变。
我采用的方式是后者。感觉可以让view不用暴露太多接口在外边。至于view内部再怎么紧耦合,我倒觉得没关系,反正view就这样了,要换的时候肯定一起换掉的。如果让control来改变,等view换的时候,还要保证接口统一,不然control也要换。
可是采用后者也有毛病,就是这类改变很多都和mode所发通知的参数有关系,这样view就需要知晓通知参数的详细信息。

这点先存个疑问,等daydayup了,再回来琢磨。

有兴趣的可以拿我的代码看,当然写的烂,看到吐血不要来打我O(>W< )O哈哈~

哦,最后是下载器的地址,差点给忘了(-_- b)

http://f2woool.com/hbb/sinabook/