/**
* 抽象角色
* 定義爲接口或者抽象類,定義方法
* @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();
}
}