大话设计模式Python实现-代理模式
代理模式(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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。