記得前段時(shí)間我就說過,要改一個(gè)電話簿的例子,到今天才算完成,真是可謂浩大的工程啊!^_^
其實(shí),這兩個(gè)月來一直都沒弄他,忙別的了,然后就給忘了(這個(gè)習(xí)慣不好),昨天剛看了一下blog,發(fā)現(xiàn)自己還有這么個(gè)東西沒完成,就趕緊完成他了。
原本是從j2medev上下載了一個(gè)電話簿程序,源文件是一個(gè)txt文件,結(jié)構(gòu)混亂,不知道作者是用什么寫的,改擴(kuò)展名.java,然后導(dǎo)入eclipse,直接ctrl+shift+F,沒效果,無奈1000多行一點(diǎn)一點(diǎn)的回車,終于把結(jié)構(gòu)給分清了,然后格式化,改一些小錯(cuò)誤,還不錯(cuò),能運(yùn)行了。
大學(xué)課程曾學(xué)過mvc,不過真正做項(xiàng)目時(shí)沒太用到過,所以就萌生了這么個(gè)念頭,改整個(gè)一個(gè)midlet文件成為真正的mvc架構(gòu)程序。
主midlet:AddrBookMIDlet.java
UI包:
MainMenuForm.java;//主菜單界面
ListAllForm.java;//記錄列表界面
AddTelForm.java;//添加記錄界面
SearchForm.java;//搜索記錄界面
ShowTelForm.java;//詳細(xì)記錄界面
model包:
AddrData.java;//記錄對(duì)象
AddrDataVector.java;//記錄的Vector對(duì)象,保存記錄列表
FriendData.java;//記錄數(shù)據(jù)model
controller包:
UIController.java;//控制器類,全部控制都寫在這里
EventID.java;//事件ID
結(jié)構(gòu)理清楚了,下面就編碼了。
至于代碼,我感覺只可意會(huì)不能言傳,或許是我語言表達(dá)能力太差吧,總之我認(rèn)為重點(diǎn)的就是mvc的最基本思想,分工明確,完成各自任務(wù),也就是理論說講的使輸入、處理和輸出分開。
比如我新加一個(gè)電話聯(lián)系人記錄,過程是這樣的:在主界面選擇新建“新增電話記錄”,當(dāng)你點(diǎn)擊“確定”的按鈕,controller控制器接受到了你的命令,做出一個(gè)相應(yīng)動(dòng)作
addTelForm = new AddTelForm(this);//實(shí)例化了一個(gè)對(duì)象
setCurrent(addTelForm);//然后將界面換成這個(gè)剛剛實(shí)例化的對(duì)象
那么當(dāng)上述命令執(zhí)行完,控制器完成他的任務(wù),然后繼續(xù)等待。
這個(gè)時(shí)候呈現(xiàn)在手機(jī)界面上就是addTelForm這個(gè)視圖,在你添加了相應(yīng)信息,點(diǎn)擊“確定”,這個(gè)時(shí)候控制器又工作了,根據(jù)你的要求,要新增,那么控制器從視圖上獲得數(shù)據(jù)的對(duì)象(這里是getString()),然后把數(shù)據(jù)發(fā)給model,model中有相對(duì)應(yīng)的方法,對(duì)數(shù)據(jù)進(jìn)行處理,結(jié)果或許返回,或許不返回,根據(jù)具體項(xiàng)目要求來定,這里不返回。都結(jié)束后,控制器再次setCurrent一個(gè)界面,顯示給使用者。
整體就是這樣,視圖View只負(fù)責(zé)顯示,控制器用于傳遞,model負(fù)責(zé)邏輯處理,三者分工明確,各執(zhí)其責(zé),整個(gè)結(jié)構(gòu)清晰明了。
從昨天到現(xiàn)在大概用了10個(gè)左右小時(shí)完成了這個(gè)小程序,其實(shí)本不需要這么長(zhǎng)時(shí)間,不過在改寫過程中,也遇到很多問題,在這次改寫過程中,對(duì)J2ME的理解又加深了一些。
寫篇日志留念。
posted on 2007-04-06 17:57
英明 閱讀(713)
評(píng)論(4) 編輯 收藏 所屬分類:
J2ME