首页 > 编程 > Python > 正文

Python设计模式之代理模式实例详解

2019-11-25 13:27:07
字体:
来源:转载
供稿:网友

本文实例讲述了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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表