代理模式

1.靜態代理

代理類實現和目標類相同的接口,並持有接口的引用,通過接口的引用在自己的內部調用目標類的方法


2.動態代理

1.JDK動態代理

通過JDK的Proxy類的靜態方法newProxyIntance,可以在程序運行期間動態的生代理類

2.Cglib動態代理

需要引入Cglib.jar,不過spring-core中已經集成了此功能,所以不需要再額外引入jar包自定義一個代

理類實現MethodInterceptor接口,在invoke方法中可實現增強功能,調用時通過Enhancer類對其進行調用


代理模式的好處:

1.中介隔離的作用

在某些時候不能直接使用目標類或者不想直接使用目標類時,可以用代理的方式對目標類進行調用

2.開閉原則,增強功能

代理模式可以在代理類中對目標類的方法進行增強,添加緩存,日誌等功能


總結:

因靜態代理模式當接口每次改變時實現類都需要改變,並且當目標類因需求增加了方法時代理類也要做相應修改,維護

起來比較麻煩,故不推薦使用。

所以當目標類有實現接口時可以通過JDK動態代理實現代理模式,沒有接口時可以用Cglib實現。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章