freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于puremvc的一個(gè)flexmp3播放器分析(已修改)

2025-07-05 19:11 本頁面
 

【正文】 做Flex做久了做大了,就會(huì)覺得之前寫的的Flex代碼開始有點(diǎn)亂,哪怕你寫的規(guī)范了,但總覺得結(jié)構(gòu)松散,維護(hù)不方便,相信很多人剛開始做Flex的時(shí)候,都是想到什么功能,就寫什么功能,或者有些好點(diǎn)的,就先畫了個(gè)大體的流程圖之類的,因?yàn)楝F(xiàn)在Flex普及得還不夠,很多人做Flex也是試探階段,不敢用作商業(yè)項(xiàng)目或其它大項(xiàng)目,只會(huì)用來試水技術(shù)層面的,所以都是做些小應(yīng)用的多,就會(huì)忽略了設(shè)計(jì)一個(gè)比較好的框架來開發(fā)。所以Flex的開發(fā)框架就應(yīng)運(yùn)而生了。目前,好的Flex開發(fā)框架還不多,官方有個(gè)Cairngorm的框架,可能有些人會(huì)說這個(gè)框架有點(diǎn)復(fù)雜,其實(shí)不然,對(duì)比起Ruby的Rails,Java的Struts,Spring之類的開發(fā)框架,就顯得簡單得多了。只要清楚了解要MVC的概念,就會(huì)對(duì)這些框架并不陌生,但是今天的主角不是Cairngorm,而是另一個(gè)Flex框架 PureMVC,如果說Cairngorm復(fù)雜的話,那么PureMVC就顯得簡單多了,PureMVC比較輕盈,核心也只有十來個(gè)類,是一個(gè)輕量級(jí)的Flex框架,但PureMVC的通用性還是比較廣的,有PHP的,有Java的有Python的??赡苤苯诱f框架的使用會(huì)比較抽象,那么就由一個(gè)實(shí)例來開始講解吧,就用一個(gè)PureMVC做的一個(gè)MP3播放器。先來看看PureMVC的結(jié)構(gòu)圖: 在圖中,F(xiàn)acade,Model,View,Controller都是PureMVC的四個(gè)核心類,都是單例模式的,用戶無需操作那Model,View,Controller類,而用戶只需要操作Facade就夠了,F(xiàn)acade類用來管理其它的三個(gè)單例類,顧名思義,那三個(gè)類都是分別對(duì)應(yīng) MVC 模式的那三個(gè)元素,F(xiàn)acade也是個(gè)單例,它負(fù)責(zé)創(chuàng)建,激活,調(diào)用其它的三個(gè)類,管理MVC各屋的生命周期。 而我們看看Model類,又細(xì)分了一個(gè)Proxy類出來,我們稱其為代理吧,就是對(duì)數(shù)據(jù)模型的一個(gè)代理,負(fù)責(zé)訪問我們的數(shù)據(jù)對(duì)象(Data Object)也就是Cairngorm中的ValueObject,其實(shí)都是同一個(gè)概念。而類結(jié)構(gòu)上,對(duì)數(shù)據(jù)操作的代理Proxy類就只有一個(gè),但可以從我們的應(yīng)用上又分為Local Proxy,Remote Proxy,其實(shí)都只是Proxy ,只是根據(jù)用戶的應(yīng)用的不同,在Proxy里面實(shí)現(xiàn)不同的功能而已,比如如果你操作本地?cái)?shù)據(jù)(內(nèi)存中的數(shù)據(jù),并非本地操作系統(tǒng)的文件),你可以寫一些VO的getter/setter直接操作數(shù)據(jù),而如果是Remote的數(shù)據(jù)的話,你可以在Proxy類里定義一些HttpService,URLLoader,WebService等等的訪問遠(yuǎn)程數(shù)據(jù)的API,之后將獲取到的遠(yuǎn)程數(shù)據(jù)放在VO中。 在Controller類里分出一個(gè)叫Command的類來,直接翻譯的話,就是“命令”類,通常這些類都是用來處理一些業(yè)務(wù)流程,某些算法操作等等的操作。比如現(xiàn)在用戶單擊了“獲取數(shù)據(jù)”的按鈕,程序?qū)腜roxy類里訪問服務(wù)器,服務(wù)器返回?cái)?shù)據(jù)之后,那些都是程序看得懂的數(shù)據(jù),比如是XML,而如果數(shù)據(jù)結(jié)構(gòu)比較復(fù)雜,你不可能直接將數(shù)據(jù)顯示給用戶看吧?那就將解析這些數(shù)據(jù)的工作交給Command來做,比如寫一個(gè)ParseCommand的類,將獲得的XML數(shù)據(jù)傳遞給該Command,在Command里進(jìn)行數(shù)據(jù)的過濾,排列,整理等等的功能。再將組積好后數(shù)據(jù)交給Mediator來進(jìn)行顯示,而Mediator,就是下面我們要說的。 在View類里分出一個(gè)Mediator的類,該類是用來對(duì)ViewComponent操作的,我們暫且叫它“中介類”吧,為什么叫“中介”呢?其實(shí)就是用戶界面(UI)與程序結(jié)構(gòu)邏輯之間的中介,因?yàn)橛脩粼诮缑嫔系牟僮?,比如Button的Click事件不是直接反映到Command或者Proxy類上的,而是反映給Mediator類,在Mediator里作一些簡單處理,比如驗(yàn)證合法性,觸發(fā)其它ViewComponent的狀態(tài)等,在這里也會(huì)將用戶的數(shù)據(jù)封裝在VO里面,再交由Command或Proxy來進(jìn)一步處理?;旧螹ediator只對(duì)用戶的操作或用戶提交的數(shù)據(jù)進(jìn)行封裝并簡單預(yù)處理,而業(yè)務(wù)邏輯,存儲(chǔ)服務(wù)的就應(yīng)交給Command和Proxy來做,這樣MVC分工好,使得程序結(jié)構(gòu)比較嚴(yán)緊,可讀性強(qiáng),實(shí)現(xiàn)松耦合。當(dāng)你改變了UI時(shí),只需要對(duì)Mediator進(jìn)行相應(yīng)的改變就行了,而你改變了業(yè)務(wù)的邏輯與算法之類的話,也相應(yīng)的改變Command就可以了,對(duì)其它模塊的影響不大。 在上面這個(gè)圖中,沒有列出來的一個(gè)很重的類,就是 Notification 類,這個(gè)類為什么十分重要,可以說也是PureMVC的潤滑劑,因?yàn)樗沁B接MVC各大部分的一個(gè)消息機(jī)制,就像是Cairngome里面的CairngomeEvent與FrontController,為了實(shí)現(xiàn)更好的松耦合,就是靠這個(gè)消息機(jī)制,因?yàn)楦鞔蟛糠种?,很少直接的引用調(diào)用,而是以“發(fā)消息”(或者說是通知吧)來相互數(shù)據(jù)交流與通訊,這里是很好的使用了“觀察者模式”,因此,在某一部分改變的處理邏輯的話,只是它所發(fā)送的消息沒有改變,或者所偵聽的消息沒有改變,那么就不會(huì)影響到其它部分。 另外要注意幾點(diǎn),Command類是短生命周期的,也就是說,當(dāng)有消息通知需要用到該Command進(jìn)行處理時(shí),F(xiàn)acade就會(huì)創(chuàng)建這個(gè)Command類,并將數(shù)據(jù)傳入Command里面進(jìn)行處理,當(dāng)處理完成后,其生命周期就會(huì)結(jié)束,所以不要將一些長生命周期的數(shù)據(jù)存放在Command里,比如不要將一些狀態(tài)數(shù)據(jù)信息存放在Command里面。還有就是Proxy類只會(huì)發(fā)送“消息”(通知),而不會(huì)接收任何消息,而Mediator與Command則可以發(fā)送與接收,所以你不能直接發(fā)消息通知Proxy去加載數(shù)據(jù),而是通過引用Proxy的實(shí)例調(diào)用相關(guān)的函數(shù)。理論就說了一大堆了,我們來看看那個(gè)MP3播放器實(shí)例吧!我們先來看看主程序的代碼,PureMVC的入口點(diǎn):1?xmlversion=encoding=utf8?2mx:Applicationxmlns:mx=3xmlns:view=.*4verticalGap=25layout=verticalcreationComplete=(this)6backgroundColor=0x4444447mx:Style8//這里的CSS代碼略去9/mx:Style1011mx:Script12![CDATA[13import1415privatevarfadace:ApplicationFacade=()。1617]]18/mx:Script19mx:Boxwidth=13120view:ProgressBoardid=progressBoard/21view:ControlBoardid=controlBoard/22view:SongListBoardid=songListBoard/23/mx:Box2425/mx:Application從上面代碼我們看到,定義了一個(gè) facade 這個(gè)就是Facade的一個(gè)實(shí)例,而ApplicationFacade是繼承自Facade類的,這個(gè)就是PureMVC的整個(gè)架構(gòu)的控制管理類,因?yàn)镕acade是一個(gè)單例,所以不能直接new 的,所以在ApplicationFacade里面定義了一個(gè)靜態(tài)方法來獲取它的實(shí)例。在程序的createComplete事實(shí)觸發(fā)的時(shí)候,(this)這個(gè)方法,意思就是啟動(dòng)整個(gè)框架。這里的代碼都比較簡單,我們再來看看ApplicationFacade的代碼:1package2{3import4import5import160
點(diǎn)擊復(fù)制文檔內(nèi)容
規(guī)章制度相關(guān)推薦
文庫吧 www.dybbs8.com
公安備案圖鄂ICP備17016276號(hào)-1