代理模式:为其他对象提供一种代理以控制对这个对象的访问。
代理模式类图:
1、RealSubject 是委托类,Proxy 是代理类;
2、Subject 是委托类和代理类的接口;
3、request() 是委托类和代理类的共同方法;
subject接口:
package unit7to12.test7;
public interface Subject {
void request();
}
RealSubject类:
package unit7to12.test7;
public class RealSubject implements Subject {
public void request(){
System.out.println("RealSubject");
}
}
代理类:
package unit7to12.test7;
public class Proxy implements Subject {
private Subject subject;
public Proxy(Subject subject){
this.subject = subject;
}
public void request(){
System.out.println("begin");
subject.request();
System.out.println("end");
}
}
客户端:
package unit7to12.test7;
public class ProxyTest {
public static void main(String[] args) {
RealSubject subject = new RealSubject();
Proxy p = new Proxy(subject);
p.request();
}
}
以上为静态代理实现,一个委托类对应一个代理类,代理类在编译期间就已经确定。
具体动态代理与静态代理区别参考:
http://www.cnblogs.com/chinajava/p/5880870.html