动态代理简单讲解
2017-04-24 19:14
169 查看
1. 什么是代理:
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。
代理的优点:
优点一:可以隐藏委托类的实现;
优点二:可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。
静态代理:
若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,
这种情况下的代理类通常都是我们在Java代码中定义的。 通常情况下,
静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类。
静态代理的局限:在于运行前必须编写好代理类。
动态代理:
代理类在程序运行时创建的代理方式被称为 动态代理。
也就是说,代理类并不是在Java代码中定义的,
而是在运行时根据我们在Java代码中的“指示”动态生成的。
相比于静态代理, 动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类的函数。
动态代理关系:由两组静态代理关系组成,这就是动态代理的本质!
这里主要讲解动态代理!
动态代理的原理:
首先通过newProxyInstance方法获取代理类实例,
而后我们便可以通过这个代理类实例调用代理类的方法,
对代理类的方法的调用实际上都会调用中介类(调用处理器)的invoke方法,
在invoke方法中我们调用委托类的相应方法,并且可以添加自己的处理逻辑。
JDK动态代理中包含一个类和一个接口:
InvocationHandler接口:
public interface InvocationHandler {
public Object invoke(Object proxy,Method method,Object[] args) throws Throwable;
}
参数说明:
Object proxy:指被代理的对象。
Method method:要调用的方法
Object[] args:方法调用时所需要的参数
下面是我的一个小demo:
1.一个接口:
2.一个类实现这个接口:
3:代理类实现InvocationHandler接口
4.最终的测试类:
希望能帮到你!
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。
代理的优点:
优点一:可以隐藏委托类的实现;
优点二:可以实现客户与委托类间的解耦,在不修改委托类代码的情况下能够做一些额外的处理。
静态代理:
若代理类在程序运行前就已经存在,那么这种代理方式被成为 静态代理 ,
这种情况下的代理类通常都是我们在Java代码中定义的。 通常情况下,
静态代理中的代理类和委托类会实现同一接口或是派生自相同的父类。
静态代理的局限:在于运行前必须编写好代理类。
动态代理:
代理类在程序运行时创建的代理方式被称为 动态代理。
也就是说,代理类并不是在Java代码中定义的,
而是在运行时根据我们在Java代码中的“指示”动态生成的。
相比于静态代理, 动态代理的优势在于可以很方便的对代理类的函数进行统一的处理,而不用修改每个代理类的函数。
动态代理关系:由两组静态代理关系组成,这就是动态代理的本质!
这里主要讲解动态代理!
动态代理的原理:
首先通过newProxyInstance方法获取代理类实例,
而后我们便可以通过这个代理类实例调用代理类的方法,
对代理类的方法的调用实际上都会调用中介类(调用处理器)的invoke方法,
在invoke方法中我们调用委托类的相应方法,并且可以添加自己的处理逻辑。
JDK动态代理中包含一个类和一个接口:
InvocationHandler接口:
public interface InvocationHandler {
public Object invoke(Object proxy,Method method,Object[] args) throws Throwable;
}
参数说明:
Object proxy:指被代理的对象。
Method method:要调用的方法
Object[] args:方法调用时所需要的参数
下面是我的一个小demo:
1.一个接口:
2.一个类实现这个接口:
3:代理类实现InvocationHandler接口
4.最终的测试类:
希望能帮到你!
相关文章推荐
- 实现简单的动态代理!
- 简单数据库连接池实现(1)---使用动态代理绑定连接
- java动态代理设计模式简单示例
- java动态代理简单实例
- java动态代理简单实例
- 使用动态代理实现简单AOP
- Java反射之JDK动态代理实现简单AOP
- Java反射机制剖析(三)-简单谈谈动态代理
- Java反射机制剖析(三)-简单谈谈动态代理
- 动态代理的简单实现
- 通过CGLIB实现AOP的浅析(顺便简单对比了一下JDK的动态代理)
- 简单的 JDK实现动态代理
- 动态代理--简单实现
- 利用动态代理实现AOP的简单示例(JDK和cglib分别实现)
- 使用Java动态代理实现简单AOP
- java动态代理的简单实现:
- 动态代理--简单实现
- CGLIB动态代理介绍和实例讲解
- 黑马程序员--java高新技术--动态代理技术的深入讲解
- Java 动态代理机制分析及扩展_讲解比较详细,收藏