行云流水's Bolg

第十一章:代理模式 - Head First 设计模式

代理模式

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

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

模式类图,p461图

p461图

应用场景

  1. 防火墙代理:控制网络资源的访问,保护主体免于“坏客户”的侵害。
  2. 智能引用代理:当主题被引用时,进行额外动作,例如计算一个对象被引用次数。
  3. 缓存代理:为开销打的运算结果提供暂时存储,允许多个客户共享结果,以减少计算或网络延迟。
  4. 同步代理:在多线程下为主题提供安全访问。
  5. 写入时复制代理:用来控制对象的复制,方法是延迟对象的复制,直到客户真的需要为止。CopyOnWriteArrayList.

例子:为糖果售卖机增加监视器

这一章很长,举了很多例子,还讲解了JAVA RMI。

blog comments powered by Disqus