Proxy
//Subject 定义RealSubject和Proxy的共同接口,这样可以在任何使用RealSubject的地方都可以用Proxy。 public abstract class Subject { public abstract void request(); }
//RealSubject 定义Proxy所代表的真实实体 public class RealSubject extends Subject{ @Override public void request() { System.out.println("real do subject !"); } }
//Proxy RealSubject的代理,与RealSubject同一个接口,这样可以代替实体。 public class Proxy extends Subject { private RealSubject subject = new RealSubject(); @Override public void request() { subject.request(); } }
public class Client { public static void main(String[] args) { Proxy proxy = new Proxy(); proxy.request(); } }
打印结果:
real do subject !
代理模式:为其它对象提供了一种代理以控制这个对象的访问。
代理模式主要使用了 Java 的多态,干活的是被代理类,代理类主要是接活,你让我干活,好,我交给幕后的类去干,你满意就成,那怎么知道被代理类能不能干呢?同根就成,大家知根知底,你能做啥,我能做啥都清楚的很,同一个接口呗。