1.静态代理
public interface Sourceable {
public void method();
}
public class Source implements Sourceable {
@Override
public void method() {
System.out.println("the original method!");
}
}
public class Proxy implements Sourceable {
private Source source;
public Proxy(){
super();
this.source = new Source();
}
@Override
public void method() {
before();
source.method();
atfer();
}
private void atfer() {
System.out.println("after proxy!");
}
private void before() {
System.out.println("before proxy!");
}
}
public class ProxyTest {
public static void main(String[] args) {
Sourceable source = new Proxy();
source.method();
}
}
2.动态代理
public class DynamicProxyHandler implements InvocationHandler {
private Object object;
public DynamicProxyHandler(final Object object) {
this.object = object;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
System.out.println("前置方法");
Object result = method.invoke(object, args);
System.out.println("后置方法");
return result;
}
}
public class DynamicProxyTest {
public static void main(String[] args) {
Sourceable source= new Source();
Sourceable proxy = (Sourceable) Proxy.newProxyInstance(Source.class.getClassLoader(), new
Class[]{Source.class}, new DynamicProxyHandler(source));
proxy .buyHosue();
}
}