您的位置 首页 java

Java 代理

代理模式:为目标对象(被调用方)提供一个包装类即代理对象,调用方通过调用代理对象来达到调用目标对象的目的,这样就实现调用方与目标对象之间的 解耦

java 中的代理模式分为静态代理和动态代理两种。

静态代理编码简单,只要持有目标对象的句柄,实现同样的接口,然后在方法中通过目标对象的句柄调用相应的方法就行了,不过这样有个弊端,就是目标方法一旦多了,那么代理对象方法也得跟着多,这样编写起来就会很繁琐

动态代理编码没有那么繁琐,但是理解起来就没有静态代理那么直观了,动态代理是通过实现InvocationHandler中的invoke方法来实现代理的,这里是java反射的具体应用。Proxy通过newInstance方法产生代理对象,当代理对象执行某一个方法时都会去调用invoke方法,最终实现对目标对象方法调用

动态代理和静态代理在写法上最大的区别就是,静态代理的代理对象是我们自己编写的,动态代理的代理对象是先写代理处理器类(实现InvocationHandler接口的类),然后用Proxy类生成代理对象

AOP 面向切面的编程,这是一种概念,意思把多个模块共用的逻辑抽取出来,当做一个公共的模块。像我们平常编写的给各个模块使用的工具类就是这种思想的体现,AOP也可以用动态代理这种方式实现,这个时候AOP中的连接点就是我们的目标对象,我们在这个目标对象前加一层代理,在执行代理方法之前或之后执行的advice就是我们抽取出来的公共逻辑,这种方法的好处在于可以实现增强方法与目标方法之间的解耦,当我们不需增强的方法的时候,直接在配置文件中把增强方法去掉就行了

文章来源:智云一二三科技

文章标题:Java 代理

文章地址:https://www.zhihuclub.com/191410.shtml

关于作者: 智云科技

热门文章

发表回复

您的电子邮箱地址不会被公开。

网站地图