代理模式及动态代理
2021-11-17 14:30:47 0 举报
解释代理模式,JDK动态代理和CglibProxy动态代理
作者其他创作
大纲/内容
HelloSerive$Proxy0
InvocationHandler
IHelloService
- sayHello()
MethodInterceptor
Client
- method()
JDK动态代理JDK动态代理为JDK自身的代理方式,只能用于对接口的代理,也就是说使用JDK代理必须使用接口。跟左图的代理模式原理一样,在简单的代理模式上将Source作为了Object对象进行传递,通过对对象的反射机制来调用对象的实现方法。
HelloSerivceImpl
MyInvocationHandler
- Object:object
+ invoke():Object
Main
Enhancer
+ create():Object- setSuperclass(Class superclass)- setCallback(Callback callback)
FastClass
HelloService
- sayHello
Proxy
MyMethodInterceptor
代理CglibProxycglib是第三方jar包实现的动态代理,支持对实现类直接进行代理。其实是对被代理类的类拷贝,拷贝的类继承被代理的类。代理是对拷贝的类进行动态代理控制。
代理Proxy代理模式其实很简单,就是客户端在调用一个对象的时候不是直接调用,而是通过代理类来实现,在实现的过程中可以添加装饰,和装饰模式有点类似。
MethodProxy
Source
Sourceable
- Source:class
- before()- method()- after()
0 条评论
回复 删除
下一页