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脚本实现集群检测和管理功能
Mar 06 Python
Python2.x和3.x下maketrans与translate函数使用上的不同
Apr 13 Python
python中enumerate函数用法实例分析
May 20 Python
500行Python代码打造刷脸考勤系统
Jun 03 Python
pyqt5 comboBox获得下标、文本和事件选中函数的方法
Jun 14 Python
Python 实现交换矩阵的行示例
Jun 26 Python
Pytorch 定义MyDatasets实现多通道分别输入不同数据方式
Jan 15 Python
python统计函数库scipy.stats的用法解析
Feb 25 Python
jupyter notebook参数化运行python方式
Apr 10 Python
基于opencv实现简单画板功能
Aug 02 Python
Django Auth用户认证组件实现代码
Oct 13 Python
利用python为PostgreSQL的表自动添加分区
Jan 18 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
超级简单的php+mysql留言本源码
2009/11/11 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
常见的四种POST 提交数据方式(小总结)
2015/10/08 PHP
4种PHP异步执行的常用方式
2015/12/24 PHP
Laravel5.1 框架控制器基础用法实例分析
2020/01/04 PHP
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
httpclient模拟登陆具体实现(使用js设置cookie)
2013/12/11 Javascript
JS冒泡事件的快速解决方法
2013/12/16 Javascript
上传图片js判断图片尺寸和格式兼容IE
2014/09/01 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
WebSocket实现简单客服聊天系统
2017/05/12 Javascript
Vim快速合并行及vim 将文件所有行合并到一行
2017/11/27 Javascript
vue路由插件之vue-route
2019/06/13 Javascript
JS常见错误(Error)及处理方案详解
2020/07/02 Javascript
让python的Cookie.py模块支持冒号做key的方法
2010/12/28 Python
微信跳一跳python自动代码解读1.0
2018/01/12 Python
python实现按长宽比缩放图片
2018/06/07 Python
基于随机梯度下降的矩阵分解推荐算法(python)
2018/08/31 Python
对python xlrd读取datetime类型数据的方法详解
2018/12/26 Python
Python注释、分支结构、循环结构、伪“选择结构”用法实例分析
2020/01/09 Python
python如何提取英语pdf内容并翻译
2020/03/03 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
利用python实现汉诺塔游戏
2021/03/01 Python
aec加密 php_php aes加密解密类(兼容php5、php7)
2021/03/14 PHP
数控技术与应用毕业生自荐信
2013/09/24 职场文书
怎么写好自荐信
2013/10/30 职场文书
商务英语专业毕业生自荐信
2013/11/05 职场文书
质检员的岗位职责
2013/11/15 职场文书
个人诉讼委托书范本
2014/10/17 职场文书
作风转变年心得体会
2014/10/22 职场文书
老公保证书
2015/01/17 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
python基础之停用词过滤详解
2021/04/21 Python
spring boot中nativeQuery的用法
2021/07/26 Java/Android
OpenCV实现常见的四种图像几何变换
2022/04/01 Python
详解SQL的窗口函数
2022/04/21 Oracle