javascript
SpringAOP之代理设计模式
[1]設(shè)計模式:
概念:
設(shè)計模式其實就是代碼的一種結(jié)構(gòu)的設(shè)計思路。
好處:
增加代碼健壯性
易修改性
可擴展性
設(shè)計模式的種類:
三大種類: 建造類設(shè)計模式
結(jié)構(gòu)類設(shè)計模式
行為類設(shè)計模式
參考網(wǎng)址:
http://baijiahao.baidu.com/s?id=1639156298714178350&wfr=spider&for=pc
[2] 代理設(shè)計模式:
代理設(shè)計模式的概念:
將對某個功能的調(diào)用以及使用的代碼封裝起來,避免調(diào)用方式以及使用代碼的直接暴露。
代理設(shè)計模式的好處:
①簡化代碼的使用流程 ②保護真實的方法的調(diào)用方式
代理設(shè)計模式的種類:
①靜態(tài)代理 ②動態(tài)代理
[3] 靜態(tài)代理
相關(guān)概念:
真實對象:要進行功能擴展的對象
真實方法:要進行功能擴展的方法
代理對象:調(diào)用真實對象并完成功能擴展的對象。
代理方法:調(diào)用真實方法的擴展方法。
靜態(tài)代理的特點:
代理對象和代理方法都是由程序員自己編寫。
代理流程:
在代理對象的代理方法中調(diào)用真實對象的真實方法,然后將代理對象和代理方法對外暴露提供服務(wù)。
[4] 動態(tài)代理
動態(tài)代理的特點:
代理對象和代理方法是動態(tài)生成的。底層流程和靜態(tài)代理一致
動態(tài)代理的種類:
動態(tài)代理既然代理對象和代理方法是動態(tài)生成的,為了便于用戶的調(diào)用,要求代理方法和真實方法的方法名,形參,返回值必須保持一致,具體實現(xiàn)如下:
①jdk動態(tài)代理(官方提供):
原則:真實對象和代理對象實現(xiàn)相同的接口
②cglib動態(tài)代理(第三方):
原則:代理對象繼承真實對象
jdk動態(tài)代理實現(xiàn)流程:
cglib動態(tài)代理實現(xiàn)流程:
①導(dǎo)入cglib相關(guān)依賴
總結(jié)
以上是生活随笔為你收集整理的SpringAOP之代理设计模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。