本文實例講述了Python設計模式之代理模式。分享給大家供大家參考,具體如下:
代理模式(Proxy Pattern):為其他對象提供一種代理以控制對這個對象的訪問
#!/usr/bin/env python# -*- coding:utf-8 -*-__author__ = 'Andy'"""大話設計模式設計模式——代理模式代理模式(Proxy Pattern):為其他對象提供一種代理以控制對這個對象的訪問實現:戴勵 替 卓賈易 送禮物給 嬌嬌模型:#公共接口類class InterFace: def request(self): pass#真實類class RealSubject(InterFace): def request(self): print 'RealSubject request'#代理類 調用真實類的內部方法class ProxySubject(InterFace) def request(self): self.real = RealSubject() self.real.request()"""# 送禮物接口class GiveGift(object): # 送洋娃娃 def GiveDolls(self): pass # 送花 def GiveFlowers(self): pass # 送巧克力 def GiveChocolate(self): pass# 被追求者類class SchoolGirl(object): def __init__(self, name): self.name = name# 追求者類class Pursuit(GiveGift): def __init__(self, Girl): self.Girl = Girl def GiveDolls(self): print self.Girl.name, '送你洋娃娃' def GiveFlowers(self): print self.Girl.name, '送你花' def GiveChocolate(self): print self.Girl.name, '送你巧克力'# 代理類class Proxy(GiveGift): def __init__(self, Girl): self.proxy = Pursuit(Girl) # 送洋娃娃 def GiveDolls(self): self.proxy.GiveDolls() # 送花 def GiveFlowers(self): self.proxy.GiveFlowers() # 送巧克力 def GiveChocolate(self): self.proxy.GiveChocolate()if __name__ == '__main__': jiaojiao = SchoolGirl('jiaojiao') daili = Proxy(jiaojiao) daili.GiveDolls() daili.GiveFlowers() daili.GiveChocolate()運行結果:
jiaojiao 送你洋娃娃
jiaojiao 送你花
jiaojiao 送你巧克力
上面的類的設計如下圖:

代理類Proxy引用代理的實體Pursite,提供與Pursite相同的接口來代替實體
更多關于Python相關內容可查看本站專題:《Python數據結構與算法教程》、《Python Socket編程技巧總結》、《Python函數使用技巧總結》、《Python字符串操作技巧匯總》及《Python入門與進階經典教程》
希望本文所述對大家Python程序設計有所幫助。
新聞熱點
疑難解答