欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
AOP觀(guān)念與術(shù)語(yǔ)

AOP全名為Aspect-Oriented Programming,有關(guān)于AOP的許多名詞術(shù)語(yǔ)都過(guò)于抽象,單從字面上并不容易理解其名詞意義,這邊將以之前介紹代理機制的范例來(lái)逐一對照以介紹AOP的術(shù)語(yǔ)與觀(guān)念:

  • <!--[if !supportLists]-->Cross-cutting concern

DynamicProxyDemo項目的例子中,記錄的動(dòng)作原先被橫切(Cross-cutting)入至HelloSpeaker本身所負責的業(yè)務(wù)流程之中,另外類(lèi)似于記錄這類(lèi)的動(dòng)作,如安全(Security)檢查、事務(wù)(Transaction)等系統層面的服務(wù)(Service),在一些應用程序之中常被見(jiàn)到安插至各個(gè)對象的處理流程之中,這些動(dòng)作在AOP的術(shù)語(yǔ)中被稱(chēng)之為Cross-cutting concerns。
 

以圖片說(shuō)明可強調出Cross-cutting concerns的意涵,例如原來(lái)的業(yè)務(wù)流程是很單純的:



現在為了要加入記錄(Logging)與安全(Security)檢查等服務(wù),對象的程序代碼中若被硬生生的寫(xiě)入相關(guān)的Logging、Security程序片段,則可使用以下圖解表示出Cross-cuttingCross-cutting concerns的概念:



Cross-cutting concerns若直接撰寫(xiě)在負責某業(yè)務(wù)的對象之流程中,會(huì )使得維護程序的成本增高,例如若您今天要將對象中的記錄功能修改或是移除該服務(wù),則必須修改所有撰寫(xiě)曾記錄服務(wù)的程序代碼,然后重新編譯,另一方面,Cross-cutting concerns混雜于業(yè)務(wù)邏輯之中,使得業(yè)務(wù)對象本身的邏輯或程序的撰寫(xiě)更為復雜。

  •   <!--[endif]-->Aspect

將散落于各個(gè)業(yè)務(wù)對象之中的Cross-cutting concerns收集起來(lái),設計各個(gè)獨立可重用的對象,這些對象稱(chēng)之為Aspect,例如在DynamicProxyDemo項目中將登錄的動(dòng)作設計為一個(gè)LogHandler類(lèi)別,LogHandler類(lèi)別在AOP的術(shù)語(yǔ)就是Aspect的一個(gè)具體實(shí)例,在AOP中著(zhù)重于Aspect的辨認,將之從業(yè)務(wù)流程中獨立出來(lái),在需要該服務(wù)的時(shí)候,縫合(Weave至應用程序之上,不需要服務(wù)的時(shí)候,也可以馬上從應用程序中脫離,應用程序中的可重用組件不用作任何的修改,例如在DynamicProxyDemo項目中的HelloSpeaker所代表的角色就是應用程序中可重用的組件,在它需要記錄服務(wù)時(shí)并不用修改本身的程序代碼。

另一方面,對于應用程序中可重用的組件來(lái)說(shuō),以AOP的設計方式,它不用知道處理提供服務(wù)的對象之存在,具體的說(shuō),與服務(wù)相關(guān)的API不會(huì )出現在可重用的應用程序組件之中,因而可提高這些組件的重用性,您可以將這些組件應用至其它的應用程序之中,而不會(huì )因為目前加入了某些服務(wù)而與目前的應用程序框架發(fā)生耦合。

  • <!--[if !supportLists]-->Advice

Aspect的具體實(shí)作稱(chēng)之為Advice,以記錄的動(dòng)作而言,Advice中會(huì )包括真正的記錄程序代碼是如何實(shí)作的,像是DynamicProxyDemo項目中的LogHandler類(lèi)別就是Advice的一個(gè)具體實(shí)例,Advice中包括了Cross-cutting concerns的行為或所要提供的服務(wù)。 

  • <!--[if !supportLists]-->Joinpoint

Aspect在應用程序執行時(shí)加入業(yè)務(wù)流程的點(diǎn)或時(shí)機稱(chēng)之為Joinpoint,具體來(lái)說(shuō),就是Advice在應用程序中被呼叫執行的時(shí)機,這個(gè)時(shí)機可能是某個(gè)方法被呼叫之前或之后(或兩者都有),或是某個(gè)例外發(fā)生的時(shí)候。

  • <!--[if !supportLists]--> <!--[endif]-->Pointcut

Pointcut是一個(gè)定義,藉由這個(gè)定義您可以指定某個(gè)Aspect在哪些Joinpoint時(shí)被應用至應用程序之上。具體的說(shuō),您可以在某個(gè)定義檔中撰寫(xiě)Pointcut,當中說(shuō)明了哪些Aspect要應用至應用程序中的哪些Joinpoint。 

  • <!--[if !supportLists]-->Target

一個(gè)Advice被應用的對象或目標對象,例如DynamicProxyDemo項目中的HelloSpeaker就是LogHandler這個(gè)AdviceTarget。

  • <!--[if !supportLists]--><!--[endif]-->Introduction

對于一個(gè)現存的類(lèi)別,Introduction可以為其增加行為,而不用修改該類(lèi)別的程序,具體的說(shuō),您可以為某個(gè)已撰寫(xiě)、編譯完成的類(lèi)別,在執行時(shí)期動(dòng)態(tài)加入一些方法或行為,而不用修改或新增任何一行程序代碼。

  • <!--[if !supportLists]--><!--[endif]-->Proxy

Expert One-on-One J2EE Development WIthout EJB一書(shū)中,Rod Johnson、Juergen Hoeller在第八章中有提到,AOP的實(shí)作有五個(gè)主要的策略: Dynamic Proxies、Dynamic Byte Code Generation、Java Code Generation、Use of a Custon Class Loader、Language Extensions。

在之前靜態(tài)代理與動(dòng)態(tài)代理中,已經(jīng)使用實(shí)際的程序范例介紹過(guò)代理機制的實(shí)現,SpringAOP主要是透過(guò)動(dòng)態(tài)代理來(lái)完成。

  • <!--[if !supportLists]-->Weave

Advice被應用至對象之上的過(guò)程稱(chēng)之為縫合(Weave),在AOP中縫合的方式有幾個(gè)時(shí)間點(diǎn):編譯時(shí)期(Compile time)、類(lèi)別加載時(shí)期(Classload time)、執行時(shí)期(Runtime)。
 

結合DynamicProxyDemo的實(shí)例,將以上介紹過(guò)的AOP相關(guān)名詞具體的使用圖片來(lái)加以表示,有助于您對每一個(gè)名詞的理解與認識:


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
AOP原理和基本概念
SpringInAction讀書(shū)筆記
面向方面編程新思想
AOP下的權限控制實(shí)現
和喜歡Spring的軟件工程師談?wù)凷pring框架的AOP
石材術(shù)語(yǔ)英漢對照
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久