Technology-设计模式-代理模式

本文介绍了GoF中的代理模式。

模式推演

远程代理:

远程代理指的是通过代理可以在本地JVM中,调用远程JVM(另一台计算机)中的对象的方法。参考Java中的RMI。

Technology-DesignPattern-Proxy-Remote

虚拟代理

例如要显示一张图片,从服务端下载,体验比较好的方式是使用虚拟代理,虚拟代理可以代理Icon,管理图片的加载,在加载未完成时,显示“加载中..”,加载完成后,代理将显示的指责委托给Icon。

保护代理

保护代理就是根据访问权限决定客户可否访问对象的代理。比如说,假设有一个雇员对象,保护代理允许雇员调用对象上的某些方法,经理则可以多调用对象的一些方法(setSalary()等),而HR可以调用所有方法。

Java中的动态代理就可以作为一种保护代理,可以控制方法的调用:

Technology-DesignPattern-Proxy-Protected

定义

代理模式(Proxy Pattern):为另一个对象提供一个替身或占位符以控制对这个对象的访问。

类图:

Technology-DesignPattern-Proxy-Class

使用代理模式创建代表对象,让代表对象控制某对象的访问,被代理的对象可以是远程的对象、创建开销大的对象或需要安全控制的对象。

代理模式和装饰者模式的区别:代理是控制对象的访问,装饰者是为对象增加行为,代理有时会在内部实例化对象,而装饰者不会。