代理模式,遇到的比较少,主要用在框架中吧。
Java对代理有内置的支持,可以参考 Proxy, InvocationHandler相关类。
关于代理如下图所示,和代理相关的具体内容等用到时再仔细研究:
代理模式和装饰者模式的结构图非常相似,但它们还是有区别的,在真正使用时一般不会搞混,下面是摘抄的一句话:
分清模式的名称没那么重要,只要使用时“应景”就行了。
代理的使用者一般不会关心被代理的对象的存在的,通常构造Proxy的时候,不用把被代理的对象传给它。Decorator正好相反,使用者需要清楚要装饰的是什么东西,Java IO包里的很多类就是装饰者。
这两者其实使用时是很难混淆的,只是很多人搞不清楚这个类的命名应该是Proxy还是Decorator而已,但是从结构和功能上,其实都不会用错的。