public interface Buy {
void buy(String name);
}
public class Person implements Buy{
@Override
public void buy(String name) {
System.out.println(this.getClass().getName() + " buy " + name);
}
}
public class BuyProxy implements Buy {
private Person person;
/**
* @param person
*/
public Proxy(Person person) {
super();
this.person = person;
}
@Override
public void buy(String name) {
person.buy(name);
}
public static void main(String[] args) {
Person p = new Person();
BuyProxy proxy = new BuyProxy(p);
proxy.buy("NIKE");
}
}
public class DynamicProxy implements InvocationHandler{
private Object p;
public DynamicProxy(Object p) {
super();
this.p = p;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("before invoke ...");
method.invoke(p, args);
System.out.println("after invoke ...");
return null;
}
public static void main(String[] args) {
Person p = new Person();
DynamicProxy dp = new DynamicProxy(p);
Buy buy = (Buy)java.lang.reflect.Proxy.newProxyInstance(p.getClass().getClassLoader(),p.getClass().getInterfaces(),dp);
buy.buy("NIKE");
}
}