Size: 1803
Comment:
|
Size: 1924
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 93: | Line 93: |
=== 反馈 === * 这个看得不是很明白,和java里强制的属性set,get有什么区别? --[:holin: HoLin] |
-- flyaflya [DateTime(2005-08-04T09:20:24Z)] TableOfContents
1. Proxy(代理)
1.1. 意图
为其他对象提供一种代理以控制对这个对象的访问。BR attachment:ProxyPattern.gif
1.2. 代码
1.3. 例子
使用Proxy改变Blue函数:
使用: >>> rgb = RGB( 100, 192, 240 )
>>> rgb.Red()
100
>>> proxy = Proxy( rgb )
>>> proxy.Green()
192
>>> noblue = NoBlueProxy( rgb )
>>> noblue.Green()
192
>>> noblue.Blue()
0
}}} 使用: >>> rgb = RGB( 100, 192, 240 )
>>> rgb.Red()
100
>>> proxy = Proxy( rgb )
>>> proxy.Green()
192
>>> noblue = NoBlueProxy( rgb )
>>> noblue.Green()
192
>>> noblue.Blue()
0
1.4. 特殊说明
因为在Proxy中没有setattr函数,因此只可以得到rgb中的值,但不能改变,比如可以"r = noblue._RBGred",但不能写"noblue._RBGred = 255",如果要想改变RBG中的值,只有在RBG中定义一些函数如"setBlue...",在noblue中直接调用。
在Proxy中也不能定义setattr,否则在init中会发生死循环。
1.5. 反馈
这个看得不是很明白,和java里强制的属性set,get有什么区别? --[:holin: HoLin]