Java 设计模式之代理模式

1、  定义:为其它对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。

2、  类图:代理对象和被代理对象拥有共同父接口,代理对象依赖被代理对象。

3、  优点:

  • 代理模式能将代理对象与真正被调用的对象分离,在一定程度上降低了系统的耦合度;
  • 代理模式能在客户端和目标对象之间起到了一个中介作用,这样可以起到保护目标对象的作用。代理对象也可以对目标对象调用之前或调用之后进行其他操作。

4、  缺点:

  • 增加系统复杂度;
  • 在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢;

5、  适用场景:

  • 远程代理:为一个对象在不同的地址空间提供局部代理,这样可以隐藏一个对象在于不同地址空间的事实;
  • 虚拟代理:是根据需要创建开销很大的对象,通过它来存放实例化需要很长时间的真实对象;
  • 安全代理:用来控制真实对象访问时的权限,一般用于对象有不同访问权限;
  • 防火墙代理:保护目标,不让恶意用户接近;
  • 智能指针:是指当调用真实的对象时,代理处理另一些事;
  • 延迟加载:用代理模式实现延迟加载的一个经典应用就是Hibernate框架里的load方法;
原文地址:https://www.cnblogs.com/littlejava/p/5724494.html