设计模式(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)安全控制,同步控制,缓存处理结果,缓存初始化开销很大的对象,统计对象的使用以及异常处理等方面。