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