/**
* 抽象角色
* 定义为接口或者抽象类,定义方法
* @author BaiWen
*
*/
public interface Subject {
public void request();
}
/**
* 抽象角色
* 定义为接口或者抽象类,定义方法
* @author BaiWen
*
*/
public interface Subject {
public void request();
}
/**
* 代理角色 需要实现InvocationHandler 定义Objec成员变量
*
* @author BaiWen
*
*/
public class ProxySubject implements InvocationHandler {
private Object obj;
public ProxySubject(Object obj) {
this.obj = obj;
}
@Override
public Object invoke(Object proxy, Method method, Object[] args)
throws Throwable {
return method.invoke(obj, args);
}
}
/**
* 测试客户端
*
* @author BaiWen
*
*/
public class Client {
public static void main(String[] args) {
RealSubject realSubject = new RealSubject();
InvocationHandler handler = new ProxySubject(realSubject);
Subject subject = (Subject) Proxy.newProxyInstance(RealSubject.class
.getClassLoader(), realSubject.getClass().getInterfaces(), handler);
subject.request();
}
}