下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
/體驗Java1.5中面向(AOP)編程對于一個能夠訪問源代碼的經(jīng)驗豐富的Java開發(fā)人員來說,任何程序都可以被看作是博物館里透明的模型。類似線程轉(zhuǎn)儲(dump)、方法調(diào)用跟蹤、斷點、切面(profiling)統(tǒng)計表等工具可以讓我們了解程序目前正在執(zhí)行什么操作、剛才做了什么操作、未來將做什么操作。但是在產(chǎn)品環(huán)境中情況就沒有那么明顯了,這些工具一般是不能夠使用的,或最多只能由受過訓(xùn)練的開發(fā)者使用。支持團(tuán)隊和最終用戶也需要知道在某個時刻應(yīng)用程序正在執(zhí)行什么操作。為了填補(bǔ)這個空缺,我們已經(jīng)發(fā)明了一些簡單的替代品,例如日志文件(典型情況下用于服務(wù)器處理)和狀態(tài)條(用于GUI應(yīng)用程序)。但是,由于這些工具只能捕捉和報告可用信息的一個很小的子集,并且通常必須把這些信息用容易理解的方式表現(xiàn)出來,所以程序員趨向于把它們明確地編寫到應(yīng)用程序中。而這些代碼會纏繞著應(yīng)用程序的業(yè)務(wù)邏輯,當(dāng)開發(fā)者試圖調(diào)試或了解核心功能的時候,他們必須"圍繞這些代碼工作",而且還要記得功能發(fā)生改變后更新這些代碼。我們希望實現(xiàn)的真正功能是把狀態(tài)報告集中在某個位置,把單個狀態(tài)消息作為元數(shù)據(jù)(metadata)來管理。資料個人收集整理,勿做商業(yè)用途在本文中我將考慮使用嵌入GUI應(yīng)用程序中的狀態(tài)條組件的情形。我將介紹多種實現(xiàn)這種狀態(tài)報告的不同方法,從傳統(tǒng)的硬編碼習(xí)慣開始。隨后我會介紹Java1.5的大量新特性,包括注解(annotation)和運行時字節(jié)碼重構(gòu)(instrumentation)。資料個人收集整理,勿做商業(yè)用途狀態(tài)管理器(StatusManager)我的主要目標(biāo)是建立一個可以嵌入GUI應(yīng)用程序的JStatusBarSwing組件。圖1顯示了一個簡單的Jframe中狀態(tài)條的樣式。資料個人收集整理,勿做商業(yè)用途我們動態(tài)生成的狀態(tài)條由于我不希望直接在業(yè)務(wù)邏輯中引用任何GUI組件,我將建立一個StatusManager(狀態(tài)管理器)來充當(dāng)狀態(tài)更新的入口點。實際的通知會被委托給StatusState對象,因此以后可以擴(kuò)展它以支持多個并發(fā)的線程。圖2顯示了這種安排。資料個人收集整理,勿做商業(yè)用途北京多線BGP超五星數(shù)據(jù)中心【點擊進(jìn)入】亦莊獨棟數(shù)據(jù)中心,雙路市電供應(yīng),2N電力保障八線BGP全萬兆接入,雙冗余上聯(lián)網(wǎng)絡(luò)查看StatusManager和JstatusBar現(xiàn)在我必須編寫代碼調(diào)用StatusManager的方法來報告應(yīng)用程序的進(jìn)程。典型情況下,這些方法調(diào)用都分散地貫穿于try-finally代碼塊中,通常每個方法一個調(diào)用。資料個人收集整理,勿做商業(yè)用途publicvoidconnectToDB(Stringurl){StatusManager.push("Connectingtodatabase");try{...}finally{StatusManager.pop();}}這些代碼實現(xiàn)了我們所需要功能,但是在代碼庫中數(shù)十次、甚至于數(shù)百次地復(fù)制這些代碼之后,它看起來就有些混亂了。此外,如果我們希望用一些其它的方式訪問這些消息該怎么辦呢?在本文的后面部分中,我將定義一個用戶友好的異常處理程序,它共享了相同的消息。問題是我把狀態(tài)消息隱藏在方法的實現(xiàn)之中了,而沒有把消息放在消息所屬的接口中。資料個人收集整理,勿做商業(yè)用途面向?qū)傩跃幊涛艺嬲雽崿F(xiàn)的操作是把對StatusManager的引用都放到代碼外面的某個地方,并簡單地用我們的消息標(biāo)記這個方法。接著我可以使用代碼生成(code-generation)或運行時反?。╥ntrospection)來執(zhí)行真正的工作。XDoclet項目把這種方法歸納為面向?qū)傩跃幊蹋ˋttribute-OrientedProgramming),它還提供了一個框架組件,可以把自定義的類似Javadoc的標(biāo)記轉(zhuǎn)換到源代碼之中。資料個人收集整理,勿做商業(yè)用途但是,JSR-175包含了這樣的內(nèi)容,Java1.5為了包含真實代碼中的這些屬性提供了一種結(jié)構(gòu)化程度更高的格式。這些屬性被稱為"注解(annotations)",我們可以使用它們?yōu)轭?、方法、字段或變量定義提供元數(shù)據(jù)。它們必須被顯式聲明,并提供一組可以包含任意常量值(包括原語、字符串、枚舉和類)的名稱-值對(name-valuepair)。資料個人收集整理,勿做商業(yè)用途注解(Annotations)為了處理狀態(tài)消息,我希望定義一個包含字符串值的新注解。注解的定義非常類似接口的定義,但是它用@interface關(guān)鍵字代替了interface,并且只支持方法(盡管它們的功能更像字段):資料個人收集整理,勿做商業(yè)用途public@interfaceStatus{Stringvalue();}與接口類似,我把@interface放入一個叫做Status.java的文件中,并把它導(dǎo)入到任何需要引用它的文件中。資料個人收集整理,勿做商業(yè)用途對我們的字段來說,value可能是個奇怪的名稱。類似message的名稱可能更適合;但是,value對于Java來說具有特殊的意義。它允許我們使用@Status("...")代替@Sta
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 女士長睡袍產(chǎn)品供應(yīng)鏈分析
- 可移動建筑物出租行業(yè)市場調(diào)研分析報告
- 互聯(lián)網(wǎng)法律服務(wù)行業(yè)營銷策略方案
- 5G健康監(jiān)測設(shè)備行業(yè)營銷策略方案
- 供應(yīng)鏈管理(SCM)行業(yè)經(jīng)營分析報告
- 在線英語教育行業(yè)營銷策略方案
- 蒸餾塔市場發(fā)展前景分析及供需格局研究預(yù)測報告
- 玻璃清潔制劑商業(yè)機(jī)會挖掘與戰(zhàn)略布局策略研究報告
- 花盆托盤項目營銷計劃書
- 鄉(xiāng)村影視拍攝基地行業(yè)經(jīng)營分析報告
- 氣象統(tǒng)計方法實習(xí)報告
- 嶺南新天地調(diào)研報告
- 推行向善文化促進(jìn)內(nèi)涵發(fā)展
- 高級生物化學(xué).PPT
- AMI_SodiumA-鈉表
- 滲透結(jié)晶材料在水利渠道襯砌工程中應(yīng)用實驗研究
- 《質(zhì)量管理體系文件》18客戶投訴處理控制程序
- 無損檢測公司質(zhì)量手冊范本
- 踝關(guān)節(jié)韌帶損傷與修復(fù)ppt課件
- 滬科版八年級物理《光的折射》優(yōu)質(zhì)教案新課標(biāo)[原創(chuàng)]
- 酒店營銷案例及分析ppt課件
評論
0/150
提交評論