设计模式阅读笔记(13)-------------代理模式

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

代理模式也是我们平常见到的。同样一个类,不同的人对这个类拥有不同的权限怎么控制?我们可以为这个类创建代理,客户通过代理来访问类,这样,我们就可以控制客户对类的访问。代理模式还有许多的用法,说到底就是为类提供了一个代表,客户通过代表来访问。

设计模式阅读笔记(13)-------------代理模式

RealSubject实现了真正的业务逻辑,Proxy和RealSubject都实现Subject接口,客户通过subject接口来完成想要的功能。而客户依赖的是Proxy类,Proxy类依赖RealSubject,通过RealSubject来完成相应的请求。

java中RMI就是一个例子了,客户端调用的其实是代理,RealSubject其实放在服务器端。虚拟代理:作为开销大的对象的代表。比如我们需要加载一个比较大的对象,那么我们可以提供一个虚拟代理,当对象还没加载完成的时候执行其他的事情,如在界面中显示:正在加载。当大对象加载完成后,把职责交给大对象,让大对象来执行请求。

动态代理:

设计模式阅读笔记(13)-------------代理模式

之所以叫动态代理是由于Proxy类是在运行时创建的。不是对象实例化,而是类的创建。而InvocationHandler只有一个invoke方法,该方法通过对Proxy的方法名称进行相应的处理,把请求交给RealSubject的方法或其他操作。Proxy通过InvocationHandler来完成请求。