package com.kinsey.woo.proxy;
public interface Star {
public void sing();
}
package com.kinsey.woo.proxy;
public class StarImpl implements Star {
public void sing(){
System.out.println("sing...");
}
}
package com.kinsey.woo.proxy;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
public class ProxyStar implements InvocationHandler {
private Object obj;
public ProxyStar(Object obj) {
super();
this.obj = obj;
}
public Object getObj() {
return obj;
}
public void setObj(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("start--->>>");
Object res = method.invoke(obj, args);
System.out.println("end----<<<");
return res;
}
}
package com.kinsey.woo.proxy;
import java.lang.reflect.Proxy;
public class Client {
public static void main(String[] args) {
StarImpl sImpl = new StarImpl();
ProxyStar proxyStar = new ProxyStar(sImpl);
Star s = (Star) Proxy.newProxyInstance(proxyStar.getClass().getClassLoader(), sImpl.getClass().getInterfaces(),proxyStar);
s.sing();
}
}