-- flyaflya [2005-08-04 09:20:24]

1. Proxy(代理)

1.1. 意图

为其他对象提供一种代理以控制对这个对象的访问。
ProxyPattern.gif

1.2. 代码

   1 class Proxy:
   2     def __init__( self, subject ):
   3         self.__subject = subject
   4     def __getattr__( self, name ):
   5         return getattr( self.__subject, name )

1.3. 例子

   1 
   2 class RGB:
   3     def __init__( self, red, green, blue ):
   4         self.__red = red
   5         self.__green = green
   6         self.__blue = blue
   7     def Red( self ):
   8         return self.__red
   9     def Green( self ):
  10         return self.__green
  11     def Blue( self ):
  12         return self.__blue

使用Proxy改变Blue函数:

   1 class NoBlueProxy( Proxy ):
   2     def Blue( self ):
   3         return 0

使用: >>> 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. 特殊说明

last edited 2005-08-04 12:20:17 by flyaflya