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


Posted in Python onJanuary 19, 2019

本文实例讲述了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 送你巧克力

上面的类的设计如下图:

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

代理类Proxy引用代理的实体Pursite,提供与Pursite相同的接口来代替实体

更多关于Python相关内容可查看本站专题:《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》及《Python入门与进阶经典教程》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python的类变量和成员变量用法实例教程
Aug 25 Python
Python的Flask框架中web表单的教程
Apr 20 Python
python爬虫入门教程--利用requests构建知乎API(三)
May 25 Python
python matplotlib 注释文本箭头简单代码示例
Jan 08 Python
关于python写入文件自动换行的问题
Jun 23 Python
python3 kmp 字符串匹配的方法
Jul 07 Python
python NumPy ndarray二维数组 按照行列求平均实例
Nov 26 Python
python os.path.isfile()因参数问题判断错误的解决
Nov 29 Python
给ubuntu18安装python3.7的详细教程
Jun 08 Python
python删除文件、清空目录的实现方法
Sep 23 Python
Python数据清洗工具之Numpy的基本操作
Apr 22 Python
如何用Python搭建gRPC服务
Jun 30 Python
用Python PIL实现几个简单的图片特效
Jan 18 #Python
Python 多维List创建的问题小结
Jan 18 #Python
python感知机实现代码
Jan 18 #Python
python实现感知器算法(批处理)
Jan 18 #Python
python实现多层感知器
Jan 18 #Python
python实现多层感知器MLP(基于双月数据集)
Jan 18 #Python
基于python实现KNN分类算法
Apr 23 #Python
You might like
?繁体转换的class
2006/10/09 PHP
利用static实现表格的颜色隔行显示的代码
2007/09/02 PHP
Php Image Resize图片大小调整的函数代码
2011/01/17 PHP
php列出一个目录下的所有文件的代码
2012/10/09 PHP
PHP获取一个字符串中间一部分字符的方法
2014/08/19 PHP
thinkphp微信开之安全模式消息加密解密不成功的解决办法
2015/12/02 PHP
Smarty3配置及入门语法
2017/02/22 PHP
基于PHP实现的多元线性回归模拟曲线算法
2018/01/30 PHP
javascript Firefox与IE 替换节点的方法
2010/02/24 Javascript
深入理解JavaScript系列(2) 揭秘命名函数表达式
2012/01/15 Javascript
多引号嵌套的变量命名的问题
2014/05/09 Javascript
浅谈javascript对象模型和function对象
2014/12/26 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 语法
2015/01/09 Javascript
Shell脚本实现Linux系统和进程资源监控
2015/03/05 Javascript
Javascript 是你的高阶函数(高级应用)
2015/06/15 Javascript
jq实现左侧显示图片右侧文字滑动切换效果
2015/08/04 Javascript
JS实现仿Windows7风格的网页右键菜单效果代码
2015/09/11 Javascript
jQuery中借助deferred来请求及判断AJAX加载的实例讲解
2016/05/24 Javascript
Angular外部使用js调用Angular控制器中的函数方法或变量用法示例
2016/08/05 Javascript
nodeJS实现简单网页爬虫功能的实例(分享)
2017/06/08 NodeJs
vue按需加载实例详解
2019/09/06 Javascript
jQuery实现的图片点击放大缩小功能案例
2020/01/02 jQuery
Python中利用xpath解析HTML的方法
2018/05/14 Python
解决python3 Pycharm上连接数据库时报错的问题
2018/12/03 Python
解决python中画图时x,y轴名称出现中文乱码的问题
2019/01/29 Python
Python为何不能用可变对象作为默认参数的值
2019/07/01 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
Python装饰器的应用场景代码总结
2020/04/10 Python
俄罗斯优惠券网站:BIGLION
2017/05/21 全球购物
个人自荐信
2013/12/05 职场文书
2014年销售经理工作总结
2014/12/01 职场文书
思想政治表现评语
2015/01/04 职场文书
小学教师岗位职责
2015/04/02 职场文书
2016年安全生产先进个人事迹材料
2016/02/29 职场文书
怎么用Python识别手势数字
2021/06/07 Python
一文搞懂PHP中的抽象类和接口
2022/05/25 PHP