代理模式(Proxy Pattern):為其他對象提供一種代理以控制對這個對象的訪問
1 #!/usr/bin/env python 2 # -*- coding:utf-8 -*- 3 4 __author__ = 'Andy' 5 6 """ 7 大話設計模式 8 設計模式——代理模式 9 代理模式(Proxy Pattern):為其他對象提供一種代理以控制對這個對象的訪問 10 實現:戴勵 替 卓賈易 送禮物給 嬌嬌 11 模型: 12 #公共接口類 13 class InterFace: 14 def request(self): 15 pass 16 #真實類 17 class RealSubject(InterFace): 18 def request(self): 19 print 'RealSubject request' 20 #代理類 調用真實類的內部方法 21 class ProxySubject(InterFace) 22 def request(self): 23 self.real = RealSubject() 24 self.real.request() 25 """ 26 27 28 # 送禮物接口 29 class GiveGift(object): 30 # 送洋娃娃 31 def GiveDolls(self): 32 pass 33 34 # 送花 35 def GiveFlowers(self): 36 pass 37 38 # 送巧克力 39 def GiveChocolate(self): 40 pass 41 42 43 # 被追求者類 44 class SchoolGirl(object): 45 def __init__(self, name): 46 self.name = name 47 48 49 # 追求者類 50 class Pursuit(GiveGift): 51 def __init__(self, Girl): 52 self.Girl = Girl 53 54 def GiveDolls(self): 55 print self.Girl.name, '送你洋娃娃' 56 57 def GiveFlowers(self): 58 print self.Girl.name, '送你花' 59 60 def GiveChocolate(self): 61 print self.Girl.name, '送你巧克力' 62 63 64 # 代理類 65 class Proxy(GiveGift): 66 def __init__(self, Girl): 67 self.proxy = Pursuit(Girl) 68 69 # 送洋娃娃 70 def GiveDolls(self): 71 self.proxy.GiveDolls() 72 73 # 送花 74 def GiveFlowers(self): 75 self.proxy.GiveFlowers() 76 77 # 送巧克力 78 def GiveChocolate(self): 79 self.proxy.GiveChocolate() 80 81 82 if __name__ == '__main__': 83 jiaojiao = SchoolGirl('jiaojiao') 84 daili = Proxy(jiaojiao) 85 daili.GiveDolls() 86 daili.GiveFlowers() 87 daili.GiveChocolate()
上面的類的設計如下圖:

代理類Proxy引用代理的實體Pursite,提供與Pursite相同的接口來代替實體
作者:Andy
出處:http://www.cnblogs.com/onepiece-andy/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
