大话设计模式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/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步