动态代理实现
- 创建一个接口类
package com.jiucheng.Proxy;
/**
*接口类
*/
public interface Iperson {
void eat();
String say();
}
- 实例化一个对象
- package com.jiucheng.Proxy;
/**
-
person
-
- @auther qiaoba
-
@date 2020/9/14 0014 13:57
**/
public class person implements Iperson {
@Override
public void eat() {
System.out.println(“我是一个吃人的方法…”);
}@Override
public String say() {
System.out.println(“我是一个说话的方法…”);
return “乔巴”;
}public int myReflact(int a, int b){
return a+b;
}
} -
创建工厂类
*package com.jiucheng.Proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;
/**
-
ProxyFactory
-
- @auther qiaoba
-
@date 2020/9/14 0014 13:58
**/
public class ProxyFactory {public static Object getProxyClass(Object object){
return Proxy.newProxyInstance(object.getClass().getClassLoader(),
object.getClass().getInterfaces(), new InvocationHandler() {
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
return method.invoke(object,args);
}
});
}public static Object getProxyClass2(Object object){
return Proxy.newProxyInstance(object.getClass().getClassLoader(),
object.getClass().getInterfaces(), (proxy, method, args) -> method.invoke(object,args));
}
} -
测试
package com.jiucheng.Proxy;
/**
- mytest
- @auther qiaoba
- @date 2020/9/14 0014 14:01
**/
public class mytest {
public static void main(String[] args) {
Iperson proxyClass = (Iperson)ProxyFactory.getProxyClass(new person());
proxyClass.eat();
proxyClass.say();
}
}