日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

MVC模式在j2me項(xiàng)目中的應(yīng)用二_JSP教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:MVC模式在j2me項(xiàng)目中的應(yīng)用一
版權(quán)聲明:本文同時(shí)發(fā)表在www.j2medev.com和我的Blog(blog.csdn.net/alikeboy)上,如果需要轉(zhuǎn)載,有三個(gè)途徑:1)聯(lián)系我并經(jīng)我同意;2)和www.j2medev.com有轉(zhuǎn)載文章合作協(xié)議的 3)

版權(quán)聲明:本文同時(shí)發(fā)表在www.j2medev.com和我的Blog(blog.csdn.net/alikeboy)上,如果需要轉(zhuǎn)載,有三個(gè)途徑:1)聯(lián)系我并經(jīng)我同意;2)和www.j2medev.com有轉(zhuǎn)載文章合作協(xié)議的 3)通過(guò)Rss聚合我的Blog。另外網(wǎng)上轉(zhuǎn)載需要全文轉(zhuǎn)發(fā)(包括文章的頭部的聲明),不要斷章取義。

正文:

Note項(xiàng)目描述

手機(jī)是一個(gè)真正隨身攜帶的數(shù)字終端,我們除了利用手機(jī)打電話(huà)、發(fā)信息外,往往讓他幫助我們記錄文字性的信息。PDA有較大的屏幕和手寫(xiě)輸入的功能,而手機(jī)上的記事功能有限,記錄的內(nèi)容很簡(jiǎn)單�?梢哉f(shuō)利用手機(jī)記錄信息是一種被視為理所應(yīng)當(dāng)?shù)墓δ�,也造就了一個(gè)一系列的應(yīng)用——將手機(jī)作為隨時(shí)隨地的信息收集器。不難設(shè)想此類(lèi)應(yīng)用會(huì)用一定的市場(chǎng),我們今天選擇的Note記事本項(xiàng)目,正是此類(lèi)應(yīng)用的單機(jī)版的原形。

Note是很多手機(jī)的內(nèi)建應(yīng)用程序,一般叫做記事本或便簽,說(shuō)明這是一個(gè)非常常用的服務(wù)。也許朋友們可能認(rèn)為開(kāi)發(fā)一個(gè)已有的程序沒(méi)有挑戰(zhàn)性。是的,在開(kāi)發(fā)上最忌諱的就是重作車(chē)輪,但對(duì)于教學(xué)則可兩說(shuō)著。畢竟一個(gè)簡(jiǎn)單的原型程序不會(huì)讓我們陷入太多的細(xì)節(jié),我的主旨是向大家介紹MVC模式的應(yīng)用方法。

Note為手機(jī)用戶(hù)提供記錄一些簡(jiǎn)短信息的功能,用戶(hù)可以添加記錄,打開(kāi)瀏覽記錄,并可以隨時(shí)修改已經(jīng)保存在手機(jī)上的記錄,當(dāng)然也可以刪除它們。就好象Windows下的記事本一樣,只不過(guò)多了管理的功能。

用例分析

首先設(shè)想一下誰(shuí)在使用這個(gè)程序:手機(jī)用戶(hù)。好,我們以后就稱(chēng)這個(gè)參與者為用戶(hù)(user)。

然后設(shè)想一下,用戶(hù)都利用我們的NOTE(中文我們叫做記錄好了)干些什么呢?很顯然,用戶(hù)可以添加新的記錄,瀏覽他添加的記錄,修改他所添加的記錄,并且他還可以刪除記錄。一條記錄應(yīng)該簡(jiǎn)單的包括用戶(hù)對(duì)記錄起的名字,記錄的創(chuàng)建或修改時(shí)間,以及最重要的記錄的內(nèi)容。

一般的情況開(kāi)發(fā)人員是很反感這種文字性的描述的,往往是因?yàn)殚_(kāi)發(fā)人員習(xí)慣于對(duì)待硬梆梆的PC機(jī),而不愿意去面對(duì)客戶(hù),收集這種需求。其實(shí)文字性的東西,既是一個(gè)對(duì)系統(tǒng)的概述,又是我們發(fā)現(xiàn)開(kāi)發(fā)要素的土壤。試想如果你的軟件要發(fā)布了,你卻無(wú)法組織起語(yǔ)言讓用戶(hù)恰當(dāng)?shù)睦斫廛浖墓δ芘c使用對(duì)象,是多么的讓人煩惱。

精練用戶(hù)的需求(其實(shí)是我的教學(xué)需求哈哈)。很顯然添加記錄與修改記錄同屬于對(duì)記錄進(jìn)行編輯操作,就叫做編輯記錄用例(NoteEdit)好了。瀏覽記錄也是一個(gè)很明顯的用例,就叫做瀏覽用例(Notepad)。刪除是對(duì)記錄進(jìn)行的一種管理,叫做管理記錄用例(NoteManager)。到此,我們已發(fā)現(xiàn)并精練了三個(gè)主要用例,還不錯(cuò),系統(tǒng)正一步步變的清晰。在這里提醒大家,這個(gè)階段是站在客戶(hù)的觀點(diǎn)(這里是用戶(hù)的觀點(diǎn))想問(wèn)題的,你的工作是發(fā)現(xiàn)并系統(tǒng)化客戶(hù)的想法,不必站在開(kāi)發(fā)者的角度思考任何細(xì)節(jié)。

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖一)

編輯記錄用例(NoteEdit

事件流1:

1) 顯示用戶(hù)Note的內(nèi)容

2) 用戶(hù)編輯內(nèi)容

3) 用戶(hù)放棄修改,note內(nèi)容不變,正常退出

事件流2:

1) 顯示用戶(hù)Note的內(nèi)容

2) 用戶(hù)編輯內(nèi)容

3) 用戶(hù)save,退回主菜單

事件流3:

1) 顯示用戶(hù)Note的內(nèi)容

2) 用戶(hù)編輯內(nèi)容

3) 用戶(hù)save As,提示讓用戶(hù)輸入新的文件名

4) Save,退回主菜單

瀏覽用例(Notepad

事件流1:

1) 顯示用戶(hù)的Note的標(biāo)題、創(chuàng)建時(shí)間、內(nèi)容

2) 用戶(hù)選擇退出,返回主菜單

事件流2:

1) 顯示用戶(hù)的Note的標(biāo)題、創(chuàng)建時(shí)間、內(nèi)容

2) 用戶(hù)顯示編輯,轉(zhuǎn)向編輯用例

管理記錄用例(NoteManager)

事件流1:

1) 顯示用戶(hù)的Note列表

2) 用戶(hù)打開(kāi)選擇的Note,轉(zhuǎn)向?yàn)g覽用例

事件流2:

1) 顯示用戶(hù)的Note列表

2) 用戶(hù)編輯選擇的Note,轉(zhuǎn)向編輯用例

事件流3:

1) 顯示用戶(hù)的Note列表

2) 用戶(hù)新建一個(gè)Note,轉(zhuǎn)向編輯用例

事件流4:

1) 顯示用戶(hù)的Note列表

2) 用戶(hù)刪除選擇的Note

3) 出現(xiàn)確認(rèn)提示

4) 用戶(hù)確認(rèn),刪除Note

5) 更新顯示,回到Note列表

三個(gè)用例的事件流一經(jīng)被分析出來(lái)了,很顯然應(yīng)該在第一次迭代全部完成。

尋找類(lèi)(oo分析)

首先是實(shí)體類(lèi)(Entity),只需要從事件流中提取名字就可以縮小范圍。

Note,顯然是個(gè)對(duì)象。

內(nèi)容(content)、時(shí)間(datetime)、標(biāo)題(title),恩,應(yīng)該是Note的元素。

Note的方法包括對(duì)域成員的操作set/get。因?yàn)橐4妫孕枰蛄谢葱蛄谢椒ā?/p>

一般實(shí)體類(lèi)都是由一個(gè)對(duì)應(yīng)的生命周期類(lèi)(lifecycle)用于他的產(chǎn)生、存儲(chǔ)、消亡等等操作,一般把這樣的操作獨(dú)立出來(lái)大大有利用實(shí)體類(lèi)的重用。不過(guò)此階段還用不著分析他,一會(huì)兒畫(huà)順序圖時(shí),自然就會(huì)發(fā)現(xiàn)它。

習(xí)慣上為了高效的畫(huà)順序圖,邊界類(lèi)和控制類(lèi)的方法都需一一列出。不過(guò)我們省了,大家只知道每個(gè)用例都對(duì)應(yīng)著一個(gè)邊界類(lèi)就好了。

設(shè)計(jì)實(shí)踐

我舉三個(gè)用例中管理記錄用例(NoteManager)的一部分和瀏覽用例(Notepad)的一部分來(lái)介紹詳細(xì)的設(shè)計(jì)過(guò)程。在這里,我們?cè)噲D從一個(gè)客戶(hù)的角度轉(zhuǎn)化到一個(gè)開(kāi)發(fā)者角度。要面對(duì)很多的挑戰(zhàn),可能包括一部分細(xì)節(jié)。應(yīng)該學(xué)習(xí)從分離的角度思考整個(gè)系統(tǒng)。MVC的精華就在這里。

記錄用例(NoteManager)事件流1:

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖二)
(點(diǎn)擊查看原圖)

NoteManagerUI并不知道Note列表的具體組織形式,它通過(guò)預(yù)先商定好的接口getNoteTitleList向控制類(lèi)NoteManagerWorkflow所要數(shù)據(jù),控制類(lèi)返回一個(gè)String[]數(shù)組。

同樣,NoteManagerWorkflow需要向生命周期類(lèi)NoteLocator所要數(shù)據(jù),不過(guò)NoteManagerWorkflow知道數(shù)據(jù)的細(xì)節(jié)。為了能夠識(shí)別數(shù)據(jù),除了返回記錄的Title這一信息外,還要同時(shí)返回一個(gè)唯一識(shí)別的ID作為整個(gè)系統(tǒng)內(nèi)識(shí)別Note的方法。所以NoteManagerWorkflow就有了兩個(gè)域一個(gè)是TitleList、一個(gè)是IdList。

這里有幾個(gè)細(xì)節(jié):

1) NoteManagerUI、NoteManagerWorkflow如何通信,這不成問(wèn)題,我們有理由相信他們是緊密相關(guān)的。

2) NoteManagerWorkflow如何找到NoteLocator,一般情況下,NoteLoator都是單件Singlton。

3) 當(dāng)NoteManagerUI的showNote(index),調(diào)用的時(shí)候,他會(huì)調(diào)用NoteManager的showNoteDispose(index),而showNoteDispose會(huì)根據(jù)內(nèi)部的實(shí)現(xiàn),將這一Index轉(zhuǎn)化為id用于識(shí)別Note

瀏覽用例(Notepad)事件流1:

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖三)

NotepadUI向控制類(lèi)所要標(biāo)題,控制類(lèi)有域note、和noteid,但是控制類(lèi)通過(guò)getNode,這里很明顯的可以使用惰性初始化技術(shù),向生命周期類(lèi)所要Note。取得記錄對(duì)象的引用后,你可以方便的像實(shí)體類(lèi)請(qǐng)求數(shù)據(jù)了。

經(jīng)驗(yàn)分享

當(dāng)然了,打好骨架后你就可以開(kāi)始時(shí)coding了,畫(huà)圖的好處是強(qiáng)迫你在設(shè)計(jì)階段做好各個(gè)部件之間的接口設(shè)計(jì)。這可以有效地減少你返工的幾率,但是往往我們?cè)谠O(shè)計(jì)階段過(guò)多的思考了細(xì)節(jié),比如NoteLocator是如何和Rms交流的等等。這都是很不好的習(xí)慣,但是不太容易改正。因?yàn)闊o(wú)論是學(xué)校里,還是陪訓(xùn)等等都是訓(xùn)練,反復(fù)的訓(xùn)練我們對(duì)coding的敏感。我們太依賴(lài)于從代碼的角度思考問(wèn)題了,這阻礙了我們從大局思考問(wèn)題,發(fā)現(xiàn)更通用的模式。

如果要開(kāi)始coding了,也不要一開(kāi)始就全面鋪開(kāi),一般實(shí)體類(lèi)具有很強(qiáng)的獨(dú)立性�?梢元�(dú)立開(kāi)發(fā),而開(kāi)發(fā)其它類(lèi)的時(shí)候可以從邊界類(lèi)開(kāi)始,如果想一邊開(kāi)發(fā)一邊測(cè)試一下,大可把控制類(lèi)、生命周期類(lèi)的方法暫時(shí)用fade data(偽支撐數(shù)據(jù)),這都是大大降低復(fù)雜性的好辦法。

有條件的話(huà)請(qǐng)進(jìn)行單元測(cè)試,不然測(cè)試效率實(shí)在是低。(Ps,有人寫(xiě)篇j2me下使用單元測(cè)試的文章好嗎,我好想讓測(cè)試自動(dòng)化)

惰性初始化是我使用的最為頻繁的技術(shù),我覺(jué)得它可以大大降低代碼混亂的程度。

整個(gè)系統(tǒng)的UML

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖四)
(點(diǎn)擊查看原圖)

有人說(shuō)看不懂UML,但如果給我這么大的代碼,我肯定看不懂。UML嗎,有可能看懂:)

屏幕快照

開(kāi)始后的畫(huà)面:(管理用例)

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖五)

新建后的畫(huà)面:(編輯用例)

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖六)

按下save,輸入title名字

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖七)

更新顯示:

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖八)

選擇你喜歡的瀏覽,比如標(biāo)題是easy的記錄:(瀏覽用例)

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖九)

屏幕導(dǎo)航:

MVC模式在j2me項(xiàng)目中的應(yīng)用(二)(圖十)

代碼種種

有朋友不愿意公開(kāi)自己的代碼,但是對(duì)于java來(lái)說(shuō),反編譯太容易了。你沒(méi)有什么秘密可言。相對(duì)于設(shè)計(jì)來(lái)說(shuō),代碼是個(gè)很細(xì)碎的東西。如果有人愿意為你修改代碼,共同完善的話(huà),那是打著燈籠也找不到的呀,我用eclipse開(kāi)發(fā),就是在使用開(kāi)放源碼的結(jié)晶呀。當(dāng)然這是對(duì)文章的附加代碼而言。真正的項(xiàng)目如果開(kāi)源一定要在GPL下進(jìn)行。誰(shuí)也不想再出現(xiàn)divx那樣的事了。轉(zhuǎn)載的朋友,再說(shuō)一遍免費(fèi)不但等于 not copyright。

  

分享:J2ME中使用記錄存儲(chǔ)系統(tǒng)RMS存儲(chǔ)信息
在MIDP中,沒(méi)有文件的概念,所以永久存儲(chǔ)一般只能依靠記錄存儲(chǔ)系統(tǒng)實(shí)現(xiàn),關(guān)于記錄存儲(chǔ)系統(tǒng)的簡(jiǎn)介,可以參看教程:http://www-900.ibm.com/developerWorks/cn/java/j-wi-rms/index.sht

來(lái)源:模板無(wú)憂(yōu)//所屬分類(lèi):JSP教程/更新時(shí)間:2008-08-22
相關(guān)JSP教程