【重学Java】(三)静态代理与动态代理

1.静态代理

静态代理是典型的代理模式的模版代码,代码结构如图:

具体实现:被代理类和代理类实现同一接口,在代理类中持有被代理对象的引用,外界调用时,操作代理对象即可操作被代理对象。由于代理的存在,还可以在操作前后加入额外的逻辑。

如果目标类是第三方的代码,也可以采用继承的方式做代理

2.动态代理

(1)动态代理只能代理接口。因为动态代理生成的proxy代理类,都是继承自系统的Proxy,Java中只有单继承。

(2)动态代理的典型特征:

        1.对于InvocationHandler的使用,其invoke方法即反射调用,可以在调用前后加入其它逻辑

        2.Proxy.newProxyInstance是返回了一个接口的实例,或者说接口实现类的实例

(3)代理对象的创建本质上也是通过反射创建

(4)应用场景:一般配合注解或反射,帮助生成模版代码

 

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