代理模式 (Proxy Pattern)
代理模式在于这个Proxy类,它将真实的要调用的RealSubject放进自己的属性内,其有自己的业务方法。而代理类则是考虑原先的这个业务方法可能不完善,需要在其业务开始前和业务结束后有一番操作需要处理,于是将原先的业务方法放在中间,再在代理类中添加上需要的功能,感觉和我之前理解的适配器模式搞混了。所以代理模式的关键在于对原先业务方法的扩展,原先的业务方法依然要执行,只是在其之前和之后可能还有要补充的一些操作,创建一个中介类Proxy来进行补充。
比如在用户进行信息查询操作的时候,希望在其之前添加身份验证和日志记录的功能,就可以用代理模式进行功能的拓展。
而代理模式还有很多种,比如远程代理、虚拟代理、动态代理、缓冲代理、保护代理等。
远程代理,就是本地计算机没有那么好的性能,当我在本地进行操作时,代理类帮我连接远程计算机来完成我的操作,获得反馈结果,这样就提高了系统的运行效率。
虚拟代理,有些应用占用资源多,加载时间长,于是给他们创建一个虚拟的代理类来假扮它们,等真实对象创建好以后再将用户请求发给真实对象进行处理。感觉Eclipse之类的大型软件开始的加载画面也是这样一种思路。
Java的动态代理是一个需要花费精力学习的东西。
缓冲代理,为某一个操作的结果提供临时的缓存空间,以便后续使用中能够共享这些结果。
保护代理,可以控制一个对象的访问权限,可以为不同用户提供不同的使用权限。
从上面的各种场景来看,代理模式确实有很大的作用,拓宽了思维,一个模式能用在各种类似的场景中。代理模式的关键就是用代理类来拓展原有的功能。