|
crybld
| 未知
在此之前,我们先来明白下什么是代理?
代理是委托者委托特定的行为给代理者来操作,从而解放自身的一种模式!在这个过程中,代理者的操作都是委托者提供的,并没有自己的服务,代理者把最后的结果返回给委托者!
如何通俗易懂的理解代理呢?比如说你有一个王者荣耀的帐号,才青铜一,太低了有木有?然后你找了个代练,把帐号给他(你自己该干嘛干嘛,委托类不用再关心代理类),他给你一口气打到了王者阶段!这个过程中,升级,配置铭文,获取金币这些操作都是用你的帐号做的(代理类调用委托类的API),最后把帐号还你(代理类把最后结果给委托类)!
代理很简单,是不是?当然,代理也有静态代理和动态代理之分!
静态代理:代理类在编译期就已经确定,生成为class文件,在运行期直接调用!
动态代理:代理类的字节码(class文件)在运行时,才动态生成并调用!
如何通俗易懂的区分呢?比如你去买车,跟商家商量好了,说是你一去,让老王(隔壁的)带你看车,(这个时候的老王已经确定了),这个老王就是静态代理!或者有些商家直接跟你说,你来吧,来了我给你找个漂亮姑娘(不确定是谁)带你看车,这个姑娘类就是动态代理!你去了才会确定!
为什么要使用动态代理?因为方便编程啊。。就用上个例子来看,如果用静态代理,老板要跟顾客说,等你过来,让小丽,小美,小花带你看车哈!(分别生成不同的代理类,很麻烦是不?)
比如说你使用了动态代理模型写代码,当新增一个处理类的时候,你只用新增实现(继承或者实现接口),原来的那个代理类不用改任何东西!
JAVA中如何使用动态代理呢?java.lang.reflect中的InvocationHandler接口和Proxy类可以实现!具体小Demo不好贴代码,可以找我索取!
spring框架就是因为使用了大量的代理类,简化编程所以才有那么多粉丝的!有一句话叫做,学好spring,走遍天下都不怕!
更多技术分享,敬请关注。。。 |
|