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

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

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

開(kāi)通VIP
CSDN技術(shù)中心 什么是AOP系列之一:AOP概念解析
我們知道,J2EE應用系統只有部署在J2EE容器中才能運行,那么為什么劃分為J2EE容器和J2EE應用系統? 通過(guò)對J2EE容器運行機制的分析,我們可以發(fā)現:實(shí)際上J2EE容器分離了一般應用系統的一些通用功能,例如事務(wù)機制、安全機制以及對象池或線(xiàn)程池等性能優(yōu)化機制。
這些功能機制是每個(gè)應用系統幾乎都需要的,因此可以從具體應用系統中分離出來(lái),形成一個(gè)通用的框架平臺,而且,這些功能機制的設計開(kāi)發(fā)有一定難度,同時(shí)運行的穩定性和快速性都非常重要,必須經(jīng)過(guò)長(cháng)時(shí)間調試和運行經(jīng)驗積累而成,因此,形成了專(zhuān)門(mén)的J2EE容器服務(wù)器產(chǎn)品,如Tomcat JBoss、Websphere、WebLogic等。
從J2EE系統劃分為J2EE容器和J2EE應用系統兩個(gè)方面,我們已經(jīng)看到一種分散關(guān)注的思路(separation of concerns)。
分散關(guān)注
將通用需求功能從不相關(guān)類(lèi)之中分離出來(lái);同時(shí),能夠使得很多類(lèi)共享一個(gè)行為,一旦行為發(fā)生變化,不必修改很多類(lèi),只要修改這個(gè)行為就可以。
AOP就是這種實(shí)現分散關(guān)注的編程方法,它將“關(guān)注”封裝在“方面”中。
AOP是什么?
AOP是OOP的延續,是Aspect Oriented Programming的縮寫(xiě),意思是面向方面編程。AOP實(shí)際是GoF設計模式的延續,設計模式孜孜不倦追求的是調用者和被調用者之間的解耦,AOP可以說(shuō)也是這種目標的一種實(shí)現。
舉例:假設有在一個(gè)應用系統中,有一個(gè)共享的數據必須被并發(fā)同時(shí)訪(fǎng)問(wèn),首先,將這個(gè)數據封裝在數據對象中,稱(chēng)為Data Class,同時(shí),將有多個(gè)訪(fǎng)問(wèn)類(lèi),專(zhuān)門(mén)用于在同一時(shí)刻訪(fǎng)問(wèn)這同一個(gè)數據對象。
為了完成上述并發(fā)訪(fǎng)問(wèn)同一資源的功能,需要引入鎖Lock的概念,也就是說(shuō),某個(gè)時(shí)刻,當有一個(gè)訪(fǎng)問(wèn)類(lèi)訪(fǎng)問(wèn)這個(gè)數據對象時(shí),這個(gè)數據對象必須上鎖Locked,用完后就立即解鎖unLocked,再供其它訪(fǎng)問(wèn)類(lèi)訪(fǎng)問(wèn)。
使用傳統的編程習慣,我們會(huì )創(chuàng )建一個(gè)抽象類(lèi),所有的訪(fǎng)問(wèn)類(lèi)繼承這個(gè)抽象父類(lèi),如下:
abstract class Worker{
abstract void locked();
abstract void accessDataObject();
abstract void unlocked();
}
缺點(diǎn):
accessDataObject()方法需要有“鎖”狀態(tài)之類(lèi)的相關(guān)代碼。Java只提供了單繼承,因此具體訪(fǎng)問(wèn)類(lèi)只能繼承這個(gè)父類(lèi),如果具體訪(fǎng)問(wèn)類(lèi)還要繼承其它父類(lèi),比如另外一個(gè)如Worker的父類(lèi),將無(wú)法方便實(shí)現。重用被打折扣,具體訪(fǎng)問(wèn)類(lèi)因為也包含“鎖”狀態(tài)之類(lèi)的相關(guān)代碼,只能被重用在相關(guān)有“鎖”的場(chǎng)合,重用范圍很窄。
仔細研究這個(gè)應用的“鎖”,它其實(shí)有下列特性:
“鎖”功能不是具體訪(fǎng)問(wèn)類(lèi)的首要或主要功能,訪(fǎng)問(wèn)類(lèi)主要功能是訪(fǎng)問(wèn)數據對象,例如讀取數據或更改動(dòng)作。
“鎖”行為其實(shí)是和具體訪(fǎng)問(wèn)類(lèi)的主要功能可以獨立、區分開(kāi)來(lái)的。
“鎖”功能其實(shí)是這個(gè)系統的一個(gè)縱向切面,涉及許多類(lèi)、許多類(lèi)的方法。如下圖:
因此,一個(gè)新的程序結構應該是關(guān)注系統的縱向切面,例如這個(gè)應用的“鎖”功能,這個(gè)新的程序結構就是aspect(方面)在這個(gè)應用中,“鎖”方面(aspect)應該有以下職責:
提供一些必備的功能,對被訪(fǎng)問(wèn)對象實(shí)現加鎖或解鎖功能。以保證所有在修改數據對象的操作之前能夠調用lock()加鎖,在它使用完成后,調用unlock()解鎖。
AOP應用范圍
很明顯,AOP非常適合開(kāi)發(fā)J2EE容器服務(wù)器,目前JBoss 4.0正是使用AOP框架進(jìn)行開(kāi)發(fā)。具體功能如下:
Authentication 權限
Caching 緩存
Context passing 內容傳遞
Error handling 錯誤處理
Lazy loading 懶加載
Debugging  調試
logging, tracing, profiling and monitoring
記錄跟蹤 優(yōu)化 校準
Performance optimization 性能優(yōu)化
Persistence  持久化
Resource pooling 資源池
Synchronization 同步
Transactions 事務(wù)
AOP有必要嗎?
當然,上述應用范例在沒(méi)有使用AOP情況下,也得到了解決,例如JBoss 3.XXX也提供了上述應用功能,但是沒(méi)有使用AOP。
但是,使用AOP可以讓我們從一個(gè)更高的抽象概念來(lái)理解軟件系統,AOP也許提供一種有價(jià)值的工具??梢赃@么說(shuō):因為使用AOP結構,現在JBoss 4.0的源碼要比JBoss 3.X容易理解多了,這對于一個(gè)大型復雜系統來(lái)說(shuō)是非常重要的。
從另外一個(gè)方面說(shuō),好像不是所有的人都需要關(guān)心AOP,它可能是一種架構設計的選擇,如果選擇J2EE系統,AOP關(guān)注的上述通用方面都已經(jīng)被J2EE容器實(shí)現了,J2EE應用系統開(kāi)發(fā)者可能需要更多地關(guān)注行業(yè)應用方面aspect。
AOP具體實(shí)現
AOP是一個(gè)概念,并沒(méi)有設定具體語(yǔ)言的實(shí)現,它能克服那些只有單繼承特性語(yǔ)言的缺點(diǎn)(如Java),目前AOP具體實(shí)現有以下幾個(gè)項目:
AspectJ (TM): 創(chuàng )建于Xerox PARC. 有近十年歷史,技術(shù)成熟。
缺點(diǎn):過(guò)于復雜;破壞封裝;需要專(zhuān)門(mén)的Java編譯器。
動(dòng)態(tài)AOP:使用JDK的動(dòng)態(tài)代理API或字節碼Bytecode處理技術(shù)。
基于動(dòng)態(tài)代理API的具體項目有:
JBoss 4.0 JBoss 4.0服務(wù)器
nanning
基于字節碼的項目有:
aspectwerkz
spring???
本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
關(guān)于spring中的aop的解釋
java框架之AOP框架
EJB3和Spring技術(shù)體系比較 - ShenYang Java User Group ...
AOP的四種主要Java實(shí)現方式
最常見(jiàn)面試題(SSH方面
框架|Spring|(一)IOC/AOP概念
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

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