package ext.fhec.cp.builder;
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Proxy;
public class dogntaidaili {
public interface MingXing{
public void sing();
}
class HuGe implements MingXing{
@Override
public void sing() {
System.out.println("sing");
}
}
static class MingXingProxyHandler implements InvocationHandler {
private final MingXing mingXing;
public MingXingProxyHandler(MingXing mingXing) {
this.mingXing = mingXing;
}
@Override
public Object invoke(Object proxy, java.lang.reflect.Method method, Object[] args) throws Throwable {
System.out.println("before sing");
Object result = method.invoke(mingXing, args);
System.out.println("after sing");
return result;
}
}
public static void main(String[] args) {
MingXing mingXing = new dogntaidaili().new HuGe();
MingXingProxyHandler mingXingProxyHandler = new MingXingProxyHandler(mingXing);
MingXing object = (MingXing)Proxy.newProxyInstance(
mingXing.getClass().getClassLoader(),
mingXing.getClass().getInterfaces(),
mingXingProxyHandler
);
object.sing();
}
}