代理模式

  代理模式大家都已经比较熟悉了,很多框架中也用到了代理模式。下面我们直接介绍代理模式。

  代理模式,为其他对象提供一种代理以控制对这个对象的访问。

  

  Subject类,定义了被代理对象和代理公用的接口,这样代理就可以使用了。

  

1 package proxy;
2 
3 public abstract class Subject {
4     public abstract void request();
5 }

  RealSubject类,定义Proxy代表的真实实体

  

1 public class RealSubject extends Subject{
2     @Override
3     public void request() {
4         System.out.println("真是的请求");
5     }
6 }

  Proxy类

  

 1 public class Proxy extends Subject{
 2     private RealSubject realSubject;
 3     @Override
 4     public void request() {
 5         if(realSubject == null){
 6             realSubject = new RealSubject();
 7         }
 8         realSubject.request();
 9     }
10 }

  客户端调用

  

1 public class MainClass {
2     public static void main(String[] args) {
3         Proxy proxy = new Proxy();
4         proxy.request();
5     }
6 }

  代理模式很简单吧,下面我们看看代理模式的应用。

  一、远程代理。也就是为一个对象在不同的地址空间提供局部代表,这样可以隐藏一个对象存在于不同地址空间的事实。

  二、虚拟代理。是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的对象。

  三、安全代理。用来控制真实对象访问时的权限,一般用于对象应该有不同的访问权限的时候。

  四、智能指引。是指当调用真实对象时,代理又去做另外一些事情。如计算真实对象的引用次数,当对象没有被引用时,可以自动释放它。或当第一次引用持久化对象时,把它放到内存。他们都是通过代理访问时附加一些内务处理。

posted @ 2012-10-24 11:36  寒剑飘香  阅读(137)  评论(0编辑  收藏  举报