我對設計模式的理解:AOP vs 動態(tài)代理(Dynamic Proxy)

曾遇到“AOP與動態(tài)代理有什么聯(lián)系”的問題,現(xiàn)把個人觀點整理如下:
我覺得,動態(tài)代理是AOP的主要實現(xiàn)手段之一,AOP是動態(tài)代理的一種應用深化
AOP是一種思想,或者是方法論,類似OOP,是OOP的有力補充;
OOP側(cè)重于主要業(yè)務功能設計(一般關(guān)注點);
AOP側(cè)重于橫切關(guān)注點(事務、日志、安全等,貫穿于多個模塊的功能)
小分析:
OOP在橫切關(guān)注點問題的不足是:1)代碼混亂 2)代碼分散
AOP很好的解決了這個問題,并且可以很好的解決“侵入問題”。
AOP的實現(xiàn),必然要求對截獲的對象進行代理,這個地方無疑要用的是動態(tài)代理機制。
如果非要說誰是誰的實現(xiàn)手段,我更傾向于AOP主要應用了動態(tài)代理,動態(tài)代理是AOP的實現(xiàn)手段。
附記:
記得一個文章提及:
AOP是設計模式的延續(xù);
GoF側(cè)重于接口、抽象函數(shù)來解除耦合;卻對對象的內(nèi)部無能為力。
AOP卻恰恰從對象的內(nèi)部著手,實現(xiàn)調(diào)用者和被調(diào)用者的分離。
常思考之,甚是!

posted on 2006-10-29 15:15 crazycy 閱讀(2371) 評論(4) 編輯 收藏 所屬分類: JavaEE技術(shù) 、Design Pattern、JEE Pattern