1. 程式人生 > >AOP是什麼?與OOP的區別

AOP是什麼?與OOP的區別

Aop是什麼?

AOP(Aspect Oriented Programming) 面向切面程式設計,是目前軟體開發中的一個熱點,是Spring框架內容,利用AOP可以對業務邏輯的各個部分隔離,從而使的業務邏輯各部分的耦合性降低,提高程式的可重用性,踢開開發效率,主要功能:日誌記錄,效能統計,安全控制,事務處理,異常處理等。

AOP實現原理是java動態代理,但是jdk的動態代理必須實現介面,所以spring的aop是用cglib這個庫實現的,cglis使用裡asm這個直接操縱位元組碼的框架,所以可以做到不使用介面的情況下實現動態代理。

AOP與OOP的卻別:

OOP面向物件程式設計,針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯單元劃分。而AOP則是針對業務處理過程中的切面進行提取,它所面對的是處理過程的某個步驟或階段,以獲得邏輯過程的中各部分之間低耦合的隔離效果。這兩種設計思想在目標上有著本質的差異。

舉例:

對於“僱員”這樣一個業務實體進行封裝,自然是OOP的任務,我們可以建立一個“Employee”類,並將“僱員”相關的屬性和行為封裝其中。而用AOP 設計思想對“僱員”進行封裝則無從談起。

同樣,對於“許可權檢查”這一動作片段進行劃分,則是AOP的目標領域。

OOP面向名次領域,AOP面向動詞領域。

總之AOP可以通過預編譯方式和執行期動態代理實現在不修改原始碼的情況下,給程式動態同意新增功能的一項技術。

引用參考地址:1.http://zhidao.baidu.com/link?url=b6XLre4JaF8FxM4r9G0gdaJ9JpPGPVT-6QsJ_V6uRbpiCK6vHToRB1twg7gTAUdlziALaEEBG1hvceYzpZs_u_

2.http://blog.csdn.net/hz_blog/article/details/7704245

關於動態代理 略有難度 參考地址:http://blog.csdn.net/lovelion/article/details/8116704