AOP面向切面程式設計理解(個人)

2021-10-19 10:19:16 字數 1279 閱讀 1530

aop的官方解釋指出aop可以對業務邏輯的各個方面進行隔離,從而使得業務邏輯各部分之間的耦合度降低,提高程式的可重用性,同時提高了開發的效率。

軟體開發追求的是高內聚、低耦合。spring框架就是為了盡可能的降低程式的耦合度。ioc是降低了類的建立,及類之間引用的耦合度。

當某個類的功能需要增強時,使用原始方法需要修改源**,aop則可以在不修改源**的條件下完成功能增強,從而降低耦合度。

aop底層使用動態**(兩種)

1、當類有介面,實現介面實現類的**物件(jdk動態**)

2、當類無介面,建立子類的**物件(cglib動態**)

建立乙個介面及其實現類

public

inte***ce

userdao

public

class

userdaoimpl

implements

userdao

@override

public

void

out(

)}

aop增強**

public

class

aop;

userdao userdao =

newuserdaoimpl()

; userdao userdao1 =

(userdao) proxy.

newproxyinstance

(aop.

class

.getclassloader()

, userdao.

getclass()

.getinte***ces()

,new

invocationhandler()

}); userdao1.

out();

}}

增強的具體過程:

呼叫proxy類的newproxyinstance方法,該方法需要三個引數,第乙個類載入器,第二個是要增強的介面陣列,第三個是乙個增強處理器。

需要增強的介面必須包含在第二個引數中。該方法會返回乙個**物件,每次當**物件呼叫方法時,都會呼叫invocationhandler的invoke方法,下面見結果。

可見完成了增強。這是spring的aop的底層實現,這部分增強**在使用中是封裝好的。了解即可。

AOP面向切面程式設計(個人理解)

面向切面程式設計的目標就是分離關注點。什麼是關注點呢,就是你要做的事,就是關注點。假如你是個公子哥,沒啥人生目標,天天就是衣來伸手,飯來張口,整天只知道玩一件事!那麼,每天你一睜眼,就光想著吃完飯就去玩 你必須要做的事 但是在玩之前,你還需要穿衣服 穿鞋子 疊好被子 做飯等等等等事情,這些事情就是你...

簡單理解AOP(面向切面程式設計)

aop為aspect oriented programming的縮寫,意為 面向切面程式設計,通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop與oop是面向不同領域的兩種設計思想。oop 物件導向程式設計 針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯...

簡單理解AOP(面向切面程式設計)

aop為aspect oriented programming的縮寫,意為 面向切面程式設計,通過預編譯方式和執行期動態 實現程式功能的統一維護的一種技術。aop與oop是面向不同領域的兩種設計思想。oop 物件導向程式設計 針對業務處理過程的實體及其屬性和行為進行抽象封裝,以獲得更加清晰高效的邏輯...