动态对象代理
还是比较有用的,例如需要处理一件事物的时候,又要插入做其他事情。。。
正如如果需要处理很多事情,通过reflect.Proxy的代理去处理,对数据资源进行统一的处理!
需要调用Reflect的两个接口,一个是:InvocationHandler,另一个是newProxyInstance()
实现客户对数据的动态代理。。。我也不知道是毛东西,连反射都不知道是啥,说个JB,看代码吧。。
public class Proxy implements InvocationHandler {
private Superman target;
public Proxy(Superman target) {
this.target = target;
}
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
System.out.println("大量的评估工作");
target.setMoney(5);
method.invoke(target, objects);
System.out.println(target.getMoney()>10?"吃屎去吧":"代购去吧");
return null;
}
}
public static void main(String[] args) {
//动态代理
Superman s = new Superman();
Proxy p = new Proxy(s);
Subject s2 = (Subject) java.lang.reflect.Proxy.newProxyInstance(s.getClass().getClassLoader(), s.getClass().getInterfaces(), p);
s2.shopping();
}}
Superman s = new Superman();
Proxy p = new Proxy(s);
Subject s2 = (Subject) java.lang.reflect.Proxy.newProxyInstance(s.getClass().getClassLoader(), s.getClass().getInterfaces(), p);
s2.shopping();
还是比较有用的,例如需要处理一件事物的时候,又要插入做其他事情。。。
正如如果需要处理很多事情,通过reflect.Proxy的代理去处理,对数据资源进行统一的处理!
需要调用Reflect的两个接口,一个是:InvocationHandler,另一个是newProxyInstance()
实现客户对数据的动态代理。。。我也不知道是毛东西,连反射都不知道是啥,说个JB,看代码吧。。
public class Proxy implements InvocationHandler {
private Superman target;
public Proxy(Superman target) {
this.target = target;
}
@Override
public Object invoke(Object o, Method method, Object[] objects) throws Throwable {
System.out.println("大量的评估工作");
target.setMoney(5);
method.invoke(target, objects);
System.out.println(target.getMoney()>10?"吃屎去吧":"代购去吧");
return null;
}
}
public static void main(String[] args) {
//动态代理
Superman s = new Superman();
Proxy p = new Proxy(s);
Subject s2 = (Subject) java.lang.reflect.Proxy.newProxyInstance(s.getClass().getClassLoader(), s.getClass().getInterfaces(), p);
s2.shopping();
}}
Superman s = new Superman();
Proxy p = new Proxy(s);
Subject s2 = (Subject) java.lang.reflect.Proxy.newProxyInstance(s.getClass().getClassLoader(), s.getClass().getInterfaces(), p);
s2.shopping();