1、 面向介面程式設計就是先把客戶的業務邏輯線提取出來,作為介面,業務具體實現通過該介面的實現類來完成。
2、 當客戶需求變化時,只需編寫該業務邏輯的新的實現類,通過更改配置檔案(例如spring框架)中該介面
3、 更改實現類就可以完成需求,不需要改寫現有**,減少對系統的影響。
(1)aop(aspect oriented programming)是面向切面程式設計。
就是通過預編譯方式和執行期動態**實現程式功能的統一維護的一種技術。
簡單說 就是在不改變方法原**的基礎上,對方法進行功能增強
本質上是生成了乙個新的類,叫做**類
(2)aop對程式的擴充套件方式採用動態**的方式. (jdk動態**和cglib動態**兩種方式)
(1)jdk的動態**
》proxy類的方法
proxy類的靜態方法可以建立**物件
static object newproxyinstance(classloader loader, class> inte***ces, invocationhandler h)
引數1:classloader loader 類載入器 , 用來載入**物件(需要增強的物件)
引數2:class> inte***ces 目標類的位元組碼物件陣列. 因為**的是介面,需要知道介面中所有的方法
引數3:invocationhandler h 執行控制代碼, **物件處理的核心邏輯就在該介面中
invocationhandler handler =
newinvocationhandler()
};
案例:動態**實現日誌系統
public
class
test};
iloginservice iloginservice =
(iloginservice) proxy.
newproxyinstance
(classload, inte***ces, handler)
;boolean login = iloginservice.
login
(user)
; system.out.
println
(login);}
}
springAOP學習筆記
今天看spring的aop,頭都看暈了 切面aspect,連線點joinpoint 切入點pointcut,proxy,通知advice,前置通知before advice 後置通知after advice,異常通知after throwing advice 最終通知 after finally a...
Spring Aop學習筆記
spring aop 1.選擇連線點 比如 1.jdk 連線點某個介面的imp方法 乙個介面roleservice有個方法printrole 有個該介面的實現類roleserviceimp呼叫方法printrole 設定該方法為連線點,在建立切面時定義 系統會為該imp類生成 物件,然後攔截prin...
springAOP學習筆記
springaop是面向切面程式設計,它一共有6個概念 joinpoint 連線點 所謂連線點是指那些被攔截到的點,在spring中這些點指的是方法,因為spring只支援方法型別的連線點 pointout 切入點 所謂切入點是指我們要對哪些joinpoint進行攔截的定義 advice通知 增強,...