下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、淺析軟件設(shè)計(jì)方法之面向切面編程淺析軟件設(shè)計(jì)方法之面向切面編程面向切面編程也叫面論文聯(lián)盟向方面,英文簡稱AP(AspetrientedPrgraing)。是通過預(yù)編譯方式、代碼級(jí)擴(kuò)展或運(yùn)行期動(dòng)態(tài)代理實(shí)如今不修改源代碼的情況下給程序動(dòng)態(tài)統(tǒng)一添加功能的一種技術(shù)。利用AP可以對(duì)業(yè)務(wù)邏輯的各個(gè)部分進(jìn)展橫向隔離,從而使得業(yè)務(wù)邏輯各部分之間的耦合度降低,進(jìn)步程序的可重用性。1面向切面編程方式的產(chǎn)生在開發(fā)軟件系統(tǒng)中,經(jīng)常會(huì)遇到功能比較單一,在系統(tǒng)中分布廣泛但是與詳細(xì)業(yè)務(wù)邏輯無關(guān)的功能邏輯。例如日志,緩存等功能。這些功能比較獨(dú)立,和業(yè)務(wù)邏輯的相關(guān)性不高,但系統(tǒng)的各層次都需要對(duì)其進(jìn)展關(guān)注。以往系統(tǒng)開發(fā),更注重把系
2、統(tǒng)縱向分層,相鄰的層次間存在單向引用關(guān)系,不相鄰的層次間互相透明,這是傳統(tǒng)P開發(fā)方式帶給系統(tǒng)架構(gòu)方式。但這種開發(fā)方式只是將縱向的功能隔離,無法和各層次通用性的功能消除耦合關(guān)系,導(dǎo)致通用性的模塊維護(hù)比較困難,因此引入橫向切面的概念,將日志,緩存等這些通用性功能各作為一種橫向切面,將需要進(jìn)展這些功能處理的地方叫做切面關(guān)注點(diǎn),將切面和其關(guān)注點(diǎn)的耦合關(guān)系剝離出來組成新的模塊對(duì)切面及其關(guān)注點(diǎn)進(jìn)展編織,這樣使業(yè)務(wù)邏輯的開發(fā)人員不必關(guān)注于詳細(xì)的切面邏輯,消除了切面功能和業(yè)務(wù)邏輯的耦合。這種開發(fā)形式就叫做面向切面編程(AP)。2面向切面編程的實(shí)現(xiàn)方式2.1提取橫向切面一般提取切面的條件:1)功能邏輯相對(duì)獨(dú)立;
3、2)功能邏輯不屬于核心業(yè)務(wù)邏輯;3)功能邏輯在系統(tǒng)中屢次使用,通用性較強(qiáng)。2.2確定切面關(guān)注點(diǎn)業(yè)務(wù)邏輯中需要調(diào)用切面邏輯的地方即為切面關(guān)注點(diǎn)。此步驟可以根據(jù)業(yè)務(wù)需求確定使用切面邏輯的相關(guān)點(diǎn)。2.3對(duì)切面及其關(guān)注點(diǎn)進(jìn)展代碼編織定義切面邏輯在切面關(guān)注點(diǎn)得位置運(yùn)行。3面向切面編程的實(shí)際應(yīng)用下面代碼以日志系統(tǒng)為例簡單對(duì)AP使用進(jìn)展描繪,例如代碼為java使用AP之前,原系統(tǒng)需求:/效勞層的業(yè)務(wù)實(shí)現(xiàn)類publilassServiepublividupdateUserInf(Useruser)/業(yè)務(wù)邏輯代碼實(shí)現(xiàn),此處省略/添加日志Lg.Inf(neDate().tString()+:操作+Servie.u
4、pdateUserInf();publividsetUserDisable(intuserId)/業(yè)務(wù)邏輯代碼實(shí)現(xiàn),此處省略/添加日志Lg.Inf(neDate().tString()+:操作+Servie.setUserDisable();Servie使用下面使用AP對(duì)此進(jìn)展重構(gòu):1)提取日志切面切面類publilassLgAspet/日志記錄方式publistatividLg(stringethdNae)Lg.Inf(neDate().tString()+:操作+ethdNae);2)切面關(guān)注點(diǎn)這里Servie類的所有方法都需要日志,所以關(guān)注日志切面的點(diǎn)為Servie類的所有方法。3)對(duì)切
5、面及其關(guān)注點(diǎn)進(jìn)展編織這里使用java內(nèi)置的動(dòng)態(tài)代理的方式來實(shí)現(xiàn)代碼編織/為Servie類實(shí)現(xiàn)動(dòng)態(tài)代理類ServieHandlerpublilassServieHandleripleentsInvatinHandler/要代理的原始對(duì)象,這里為Servie類privatebjetbjriginal;publiServieHandler(bjetbj)this.bjriginal=bj;publibjetinvke(bjetprxy,ethdethd,bjetargs)thrsThrablebjetresu/調(diào)用原始對(duì)象的方法result=ethd.invke(this.bjriginal,arg
6、s);/調(diào)用日志切面功能,組裝到Servie類的每個(gè)函數(shù)調(diào)用后LgAspet.Lg(ethd.tString();returnresu4)執(zhí)行調(diào)用方法初始化關(guān)注點(diǎn)對(duì)象論文聯(lián)盟Servieservie=neServie();InvatinHandlerhandler=neServieHandler(servie);Servieprxy=(servie)Prxy.nePrxyInstane(servie.getlass().getlassLader(),servie.getlass().getInterfaes(),handler);詳細(xì)調(diào)用prxy.updateUserInf(user);5)本
7、卷須知在現(xiàn)實(shí)的系統(tǒng)中,常常使用I配合AP使用,將詳細(xì)業(yè)務(wù)調(diào)用對(duì)象依賴于抽象接口而不使用詳細(xì)實(shí)現(xiàn)類,使用切面代理對(duì)象注入到調(diào)用對(duì)象用。這樣對(duì)于調(diào)用對(duì)象而言,整個(gè)AP的過程都是透明的,因此到達(dá)完全解耦的效果。4面向切面編程的根本應(yīng)用對(duì)于特定模塊的根本操作,如業(yè)務(wù)層對(duì)事務(wù)的開啟和關(guān)閉,應(yīng)用層的日志記錄,各模塊權(quán)限斷定等。在這些方面AP可以極大的減少業(yè)務(wù)邏輯中的冗余代碼,使業(yè)務(wù)代碼更明晰直觀。java語言里,AP的框架在spring等一些主流框架中都有完善的處理機(jī)制,但是在.net平臺(tái)還沒有權(quán)威的框架支持,也于.net從語言級(jí)別不支持動(dòng)態(tài)代理有關(guān)。5完畢語AP作為一種有效的軟件設(shè)計(jì)方式,對(duì)原有的軟件設(shè)計(jì)體系是一個(gè)有效的補(bǔ)充
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024屆廣東省珠海一中等六校高三六校第一次聯(lián)考數(shù)學(xué)試題試卷
- 曾都區(qū)教師合同
- 餐廳勞務(wù)外包合同
- 材料合同作廢說明 模板
- 北京市三方就業(yè)協(xié)議書樣本
- 山西省2024八年級(jí)物理上冊(cè)第三章物態(tài)變化特色章末小測課件新版新人教版
- 項(xiàng)目事故應(yīng)急預(yù)案保證措施
- 人教版2024-2025學(xué)年二年級(jí)數(shù)學(xué)上冊(cè)第三次月考質(zhì)量檢測(5-6單元)(含答案)
- 生物安全應(yīng)急處置
- 制證一體機(jī)相關(guān)行業(yè)投資方案范本
- 《勞動(dòng)創(chuàng)造幸福奮斗成就夢想》主題班會(huì)
- 牛津譯林版英語2024七年級(jí)上冊(cè)全冊(cè)單元知識(shí)清單(記憶版)
- 2024小學(xué)道德與法治新教材培訓(xùn):教材解讀及教學(xué)建議
- 2024-2025學(xué)年山西省太原市數(shù)學(xué)高三上學(xué)期模擬試卷與參考答案
- 3.16謠言止于智者-正確處理同學(xué)關(guān)系班會(huì)解析
- 2024版全新勞動(dòng)仲裁證據(jù)目錄范本
- 小學(xué)數(shù)學(xué)北師大版六年級(jí)上冊(cè)《看圖找關(guān)系》課件
- 人教部編版八年級(jí)道德與法治上冊(cè):5.2《預(yù)防犯罪》說課稿1
- (必會(huì))高級(jí)茶評(píng)員近年考試真題題庫(含答案)
- 2023年貴州省中考化學(xué)真題試卷(解析版)
- 《裝飾材料與施工》考試復(fù)習(xí)題庫(含答案)
評(píng)論
0/150
提交評(píng)論