简单实现java代理

动态代理技术就是用来产生一个对象的代理对象的

代理对象存在的价值主要用于拦截对真实业务对象的访问
代理对象应该具有和目标对象(真实业务对象)相同的方法

 

首先创建两个接口EmailData,Email中有两个方法send()receive()待实现,Data中有read()write()待实现

如下图

分别创建他们各自的实现类FlashEmail UsbData

代码如下:

创建两个annotation Aspactplus如下图

Aspact用来标识附加的类


被标识的类如下图


以下代码创建代理对象

该类实现了InvocationHandler接口

Interface InvocationHandler

该接口中仅定义了一个方法:public Object invoke(Object obj, Method method, Object[] args),在使用时,第一个参数obj一般是指代理类,method是被代理的方法,args为该方法的参数数组。这个抽象方法在代理类中动态实现


以下为invoke方法

分为两部分


创建原对象

根据原始对象,创建代理对象代码如下:

测试结果:

这是发现了send()方法和write()方法都附加了加密方法,即成功创建了代理对象

猜你喜欢

转载自blog.csdn.net/qq_39915116/article/details/80375695