代理模式Proxy 为别人做嫁衣(控制对象访问)

为其他对象提供一种代理以控罪对这个对象的访问。
代理大致被分为以下几种:

虚代理:根据需要来创建开销很大的对象,该对象只有在需要的时候才会被真正创建。

远程代理:用来在不同的地址空间上代表同一对象,这个不同的地址空间可以是在本机,也可以在其他机器上。java里最典型的就是RMI技术。

copy-on-write代理:在客户端操作的时候,只有对象确实改变了,才会真的拷贝(克隆)一个目标对象,算是虚代理的一个分支。

保护代理:控制对原始对象的访问,如果有需要,可以给不同的用户提供不同的访问权限。

Cache代理:为那些昂贵操作的结果提供临时的存储空间,以便多个客户端可以共享这些结果。

防火墙代理:保护对象不被恶意用户访问和操作。

同步代理:使多个用户能够同时访问目标对象而没有冲突。

智能指引:在访问对象时执行一些附加操作。比如,对指向实际对象的引用计数。第一次引用一个持久对象时,将它装入内存。

代理类和委托类实现相同的接口。代理类中引用了委托类来实现接口中的方法,在客户端可以使用代理类。

把自己实现的代理模式称为Java的静态代理。缺点是一旦接口发生变化,代理类和委托类都要改变。

把Java内建的对代理模式支持的功能来实现的代理称为Java的动态代理。

Java的动态代理目前只能代理接口,依靠Java的反射机制和动态生成class的技术。

Java的动态代理还是实现AOP的一个重要手段。

你可能感兴趣的:(设计模式)