Programming 版 (精华区)
发信人: Sun (大灯泡), 信区: SoftEng
标 题: [Design Pattern] Proxy
发信站: 哈工大紫丁香 (2001年03月26日09:22:10 星期一), 站内信件
发信人:Crystal_Y (小衲) 版面名称:SoftEng(980)
标 题:[Design Pattern] Proxy
发信站:中国科大BBS站 (Sun, 25 Mar 2001 15:29:49 )
标 记:精华
Proxy是不是就是Broker?
Proxy,Adapter,Decorator都不会让client直接访问real object,但Proxy比
其它两个更加接近real object,它就像->一样指向real object,但是它在作->的
时候还做了很多其它更加复杂的操作。
所以proxy的接口会与real object一样。
Proxy有几种:
remote proxy使得分布在网络上的component对于某台机器上的client来
说,好像都在本地。当client发出请求后,remote proxy也许会把请求queue、编
码、打包然后发送到另一个地方,让real object得到这些请求进行处理,再通过
proxy返回给client.
virtual proxy延迟某些cost expensive的对象的创建,直到真正需要它的时候
(creation on demand),为此virtual proxy会保留一些关于real object的比较简单
的信息以满足一些简单的访问(当然要保留,否则任何操作都将变成需要creation的
demand了)。
protection proxy负责对real object的有权限存取,这太像broker了呵呵,
有钱才能见我的明星~
smart reference往往会重载->或者*,作引用计数,load on first time
reference,互斥检查等等附加操作,这些操作对client是完全透明的。
引用计数加上creation on demand,就可以实现著名的copy on write,当
对一个object作copy的时候,由于它被proxy代理了,实际上是复制了一个
proxy,这个复制操作只增加了real object的引用计数。如果client使用这个proxy
进行任何一个对real object的写操作,proxy将实际拷贝一个新的real object,再
执行写;否则,该proxy将一直使用老的real object。
并不是所有的proxy都需要compose一个real object的引用,remote proxy
很可能就是一个real object的网络服务地址,而virtual proxy则可能在开始只有
real object的文件名,protection proxy和smart reference倒是一般都会在proxy
创建的时候获得一个real object的引用。
http://202.38.79.111/GoF/pat4gfs.htm
--
※ 来源: 中国科大BBS站 [bbs.ustc.edu.cn]
--
太阳当空照,灯泡呵呵笑,
mm说,早上好,你为什么又不理我了?
我要做光光,光光没烦恼,
高高跳,大声叫,光光的乐趣你们不知道!
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: sunner.hit.edu.cn]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:2.359毫秒