设计模式(7)---代理模式

代理模式 Proxy(结构型模式)

 

1.概述

代理模式:为其他对象提供一种代理以控制对这个对象的访问。例如:你需要去买点零食,你不是直接去生产零食的工厂里买,而是去超市或者小卖部里买,超市就可以看成代理。

代理模式一种比较常见的应用:打开一个有很多图片的网页时,图片可能没有完全加载出来,而是过一会才显示出来。

 

2.结构图

 

3.代码

1 public interface Subject {
2 
3      public void request();
4 
5 }

 

1 public class RealSubject implements Subject {
2 
3     @Override
4     public void request() {
5         System.out.println("买零食");
6     }
7 
8 }

 

 1 public class Proxy implements Subject {
 2 
 3     private RealSubject realSubject ;
 4     
 5     public Proxy() {
 6         if (realSubject == null)
 7             realSubject = new RealSubject();
 8     }
 9 
10     @Override
11     public void request() {
12         System.out.print("通过代理 在超市    ");
13         realSubject.request();
14     }
15 
16 }

 

 1 public class Test {
 2 
 3     public static void main(String[] args) {
 4         Subject proxy = new Proxy() ;
 5         //通过代理 在超市    买零食
 6         proxy.request();
 7         
 8         Subject realSubject = new RealSubject();
 9         //买零食
10         realSubject.request();
11     }
12 
13 }

 

4.适用场景

(1)代理一些开销很大的对象,这样便能迅速返回,进行其他操作,只有在真正需要时才去实例化。

(2)安全控制,同步控制,缓存处理结果,缓存初始化开销很大的对象,统计对象的使用以及异常处理等方面。

posted @ 2016-08-07 21:51  __Meng  阅读(292)  评论(0编辑  收藏  举报