【重學Java】(三)靜態代理與動態代理

1.靜態代理

靜態代理是典型的代理模式的模版代碼,代碼結構如圖:

具體實現:被代理類和代理類實現同一接口,在代理類中持有被代理對象的引用,外界調用時,操作代理對象即可操作被代理對象。由於代理的存在,還可以在操作前後加入額外的邏輯。

如果目標類是第三方的代碼,也可以採用繼承的方式做代理

2.動態代理

(1)動態代理只能代理接口。因爲動態代理生成的proxy代理類,都是繼承自系統的Proxy,Java中只有單繼承。

(2)動態代理的典型特徵:

        1.對於InvocationHandler的使用,其invoke方法即反射調用,可以在調用前後加入其它邏輯

        2.Proxy.newProxyInstance是返回了一個接口的實例,或者說接口實現類的實例

(3)代理對象的創建本質上也是通過反射創建

(4)應用場景:一般配合註解或反射,幫助生成模版代碼

 

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