functionStorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+" />

欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

AOP觀念與術語

系統 1759 0
<script>function StorePage(){d=document;t=d.selection?(d.selection.type!='None'?d.selection.createRange().text:''):(d.getSelection?d.getSelection():'');void(keyit=window.open('http://www.365key.com/storeit.aspx?t='+escape(d.title)+'&u='+escape(d.location.href)+'&c='+escape(t),'keyit','scrollbars=no,width=475,height=575,left=75,top=20,status=no,resizable=yes'));keyit.focus();}</script>

示例下載。

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

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

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


以圖片說明可強調出 Cross-cutting concerns 的意涵,例如原來的業務流程是很單純的:

AOP觀念與術語

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

AOP觀念與術語

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

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

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

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

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

Aspect 的具體實作稱之為 Advice ,以記錄的動作而言, Advice 中會包括真正的記錄程序代碼是如何實作的,像是 DynamicProxyDemo 項目中的 LogHandler 類別就是 Advice 的一個具體實例, Advice 中包括了 Cross-cutting concerns 的行為或所要提供的服務。

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

Aspect 在應用程序執行時加入業務流程的點或時機稱之為 Joinpoint ,具體來說,就是 Advice 在應用程序中被呼叫執行的時機,這個時機可能是某個方法被呼叫之前或之后(或兩者都有),或是某個例外發生的時候。

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

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

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

一個 Advice 被應用的對象或目標對象,例如 DynamicProxyDemo 項目中的 HelloSpeaker 就是 LogHandler 這個 Advice Target

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

對于一個現存的類別, Introduction 可以為其增加行為,而不用修改該類別的程序,具體的說,您可以為某個已撰寫、編譯完成的類別,在執行時期動態加入一些方法或行為,而不用修改或新增任何一行程序代碼。

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

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

在之前靜態代理與動態代理中,已經使用實際的程序范例介紹過代理機制的實現, Spring AOP 主要是透過動態代理來完成。

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

Advice 被應用至對象之上的過程稱之為縫合( Weave ),在 AOP 中縫合的方式有幾個時間點:編譯時期( Compile time )、類別加載時期( Classload time )、執行時期( Runtime )。


結合 DynamicProxyDemo 的實例,將以上介紹過的 AOP 相關名詞具體的使用圖片來加以表示,有助于您對每一個名詞的理解與認識:

AOP觀念與術語


AOP觀念與術語


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久最新精品 | 国产日韩精品一区 | 国产成人18黄禁网站免费观看 | 男女配种超爽免费视频 | 国产精品免费观看视频 | 亚洲影视在线 | 在线观看欧美成人 | 欧美精品福利 | 毛片91| 毛片免费观看 | 国产亚洲精品久久久久久一区二区 | 亚洲欧美国产精品久久久久久久 | 成人免费电影视频 | 欧美综合在线观看 | 午夜视频在线观看网站 | 欧美白人战黑吊 | 久草网站在线 | 男女精品视频 | 伊人久久99亚洲精品久久频 | 成人爽a毛片免费啪啪红桃视频 | 夜夜夜夜爽 | 91在线一区二区 | 欧美日韩在线免费观看 | 一区二区免费看 | 久久精品欧美一区二区三区不卡 | 夜夜操狠狠干 | 天天爽夜夜爽夜夜爽 | 福利视频网页 | 爱人同志国语免费观看全集 | 亚洲情a成黄在线观看动 | 小视频你懂得 | 国产精品高清视亚洲乱码 | 手机在线观看你懂得 | 精品小视频在线观看 | 激情久久av一区av二区av三区 | 亚洲国产香蕉视频欧美 | av中文字幕在线 | 九九久久看少妇高潮A片特黄 | 欧美一级二级三级 | 欧美综合激情网 | 狠狠草视频 |