近来很忙,一直没写 blog 了,今天晚上有点时间,听了节 MSDN 上面的一节 webCast ,讲的就是 Proxy 模式,本就就是这节课的笔记。
学习设计模式也有段时间了,很早也见过 Proxy 模式的,记得最开始接触 Proxy 模式还是在著名的 JIVE 论坛( JIVE 中用 Proxy 来做权限控制)。今天算是一遍复习吧。
对复杂的软件系统,人们常常用的一种处理手法是在系统增加一层间接层,得到对系统灵活的、满足特殊要求的解决方案。
使用 Proxy 模式的动机:在 OO 的开发过程中,某些对象的开销很大(如: new 的开销大、某些对象因为安全的原因不能被客户直接的调用等),如果直接操作这些对象会破坏系统结构。那么,我们就用代理对象来控制对象的访问。
例子, 一个常见的 HR 系统:
现在要求把 Employee 做成 webService , HR 系统通过 webService 来调用 Employee 对象,代码修改如下:
Proxy 使用的要点:
1 、“增加一层间接层”,是软件系统中常用的手段之一。
2 、具体的实现中, Proxy 有很大差别,有的是简单的“ copy-on-write ”,有的是对组件模块的抽象代理。在 JAVA 中常见的 SSH 架构模式中( struts+spring+hibernate )中,我们可以把 spring 所在的服务层看成对 hiberate 的代理。
具体的实现可以参考 .NET 中的 WebService 的实现。
Copy-on-write 技术
sb1.replace("H","L"); 系统做的动作是, sb1 的代理对象先拷贝 ”Hello” 字符串,然后用“ L ”替换“ H ”, sb1 的代理对象重新指向新的对象。
Copyright @ 面朝大海 Powered by: .Text and ASP.NET Theme by: .NET Monster