代理模式(Proxy)定义:由于某些原因需要给某对象提供一个代理以控制对该对象的访问。这时,访问对象不适合或者不能直接引用目标对象,代理对象作为访问对象和目标对象之间的中介。
代理模式的优点有:
1、代理模式在客户端与目标对象之间起到一个中介作用和保护目标对象的作用;
2、代理对象可以扩展目标对象的功能;
3、代理模式能将客户端与目标对象分离,在一定程度上降低了系统的耦合度。
目标对象(被代理的对象):
1 public interface Subject { 2 public void Request(); 3 } 4 5 public class RealSubject implements Subject { 6 @Override 7 public void Request() { 8 // TODO Auto-generated method stub 9 System.out.println("原生实现"); 10 } 11 }
代理对象:
1 public class Proxy implements Subject { 2 private RealSubject realsubject = new RealSubject(); 3 4 public Proxy() { 5 if (realsubject == null) { 6 realsubject = new RealSubject(); 7 } 8 } 9 10 @Override 11 public void Request() { 12 // TODO Auto-generated method stub 13 PreRequest(); 14 realsubject.Request(); 15 PostRequest(); 16 } 17 18 public void PreRequest() { 19 System.out.println("预处理"); 20 } 21 22 public void PostRequest() { 23 System.out.println("后处理"); 24 } 25 }
调用方式:
1 public class Client { 2 public static void main(String[] args) { 3 // TODO Auto-generated method stub 4 Subject proxy = new Proxy(); 5 proxy.Request(); 6 } 7 }
执行结果:
Java的Spring框架的AOP(面向切面编程)就是使用这种设计模式实现的。