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正则表达式操作指南(re使用)
Sep 06 Python
python实现的一个p2p文件传输实例
Jun 04 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
May 17 Python
python MySQLdb使用教程详解
Mar 20 Python
tensorflow实现简单的卷积神经网络
May 24 Python
Django分页查询并返回jsons数据(中文乱码解决方法)
Aug 02 Python
python字符串替换第一个字符串的方法
Jun 26 Python
python3调用windows dos命令的例子
Aug 14 Python
python 根据网易云歌曲的ID 直接下载歌曲的实例
Aug 24 Python
用Python解数独的方法示例
Oct 24 Python
解决pytorch 交叉熵损失输出为负数的问题
Jul 07 Python
Python 使用dict实现switch的操作
Apr 07 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生成静态页面教程
2012/01/10 PHP
基于PHP读取csv文件内容的详解
2013/06/18 PHP
PHP+jQuery翻板抽奖功能实现
2015/10/19 PHP
Swoole-1.7.22 版本已发布,修复PHP7相关问题
2015/12/31 PHP
一个JS翻页效果
2007/07/23 Javascript
javascript 清空form表单中某种元素的值
2009/12/26 Javascript
基于jquery的Repeater实现代码
2010/07/17 Javascript
javascript数组去重3种方法的性能测试与比较
2013/03/26 Javascript
用javascript读取xml文件读取节点数据
2014/08/12 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
深入浅析JavaScript中的3DES
2016/08/24 Javascript
JS中跨页面调用变量和函数的方法(例如a.js 和 b.js中互相调用)
2016/11/01 Javascript
深入理解vue $refs的基本用法
2017/07/13 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
浅谈Angular单元测试总结
2019/03/22 Javascript
layui数据表格跨行自动合并的例子
2019/09/02 Javascript
深入探索VueJS Scoped CSS 实现原理
2019/09/23 Javascript
如何在selenium中使用js实现定位
2020/08/18 Javascript
Python while 循环使用的简单实例
2016/06/08 Python
python使用正则表达式匹配字符串开头并打印示例
2017/01/11 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
基于python 取余问题(%)详解
2020/06/03 Python
Python如何爬取b站热门视频并导入Excel
2020/08/10 Python
CSS3之transition实现下划线的示例代码
2018/05/30 HTML / CSS
详解HTML5常用的语义化标签
2019/09/27 HTML / CSS
Pat McGrath Labs官网:世界上最有影响力的化妆师推出的彩妆品牌
2018/01/07 全球购物
英国在线花园中心:You Garden
2018/06/03 全球购物
汽车装潢店创业计划书范文
2014/02/05 职场文书
学校党委干部个人对照检查材料思想汇报
2014/10/09 职场文书
2015年公务员试用期工作总结
2015/05/28 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
自荐信大全
2019/03/21 职场文书
【海涛教你打DOTA】死灵飞龙第一视角解说
2022/04/01 DOTA
Java虚拟机内存结构及编码实战分享
2022/04/07 Java/Android