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从ftp下载数据保存实例
Nov 20 Python
Windows系统配置python脚本开机启动的3种方法分享
Mar 10 Python
简单的连接MySQL与Python的Bottle框架的方法
Apr 30 Python
详解Python核心对象类型字符串
Feb 11 Python
详谈Python3 操作系统与路径 模块(os / os.path / pathlib)
Apr 26 Python
详解opencv Python特征检测及K-最近邻匹配
Jan 21 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
Jun 03 Python
python利用JMeter测试Tornado的多线程
Jan 12 Python
对tensorflow中cifar-10文档的Read操作详解
Feb 10 Python
python实现图片横向和纵向拼接
Mar 05 Python
python 如何区分return和yield
Sep 22 Python
关于Python中进度条的六个实用技巧分享
Apr 05 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 echo, print, print_r, sprintf, var_dump, var_expor的使用区别
2013/06/20 PHP
php下Memcached入门实例解析
2015/01/05 PHP
php array_walk 对数组中的每个元素应用用户自定义函数详解
2016/11/18 PHP
用于table内容排序
2006/07/21 Javascript
拖拉表格的JS函数
2008/11/20 Javascript
jQuery学习笔记之jQuery选择器的使用
2010/12/22 Javascript
JavaScript高级程序设计 阅读笔记(二十一) JavaScript中的XML
2012/09/14 Javascript
javascript屏蔽右键代码
2014/05/15 Javascript
javascript在IE下trim函数无法使用的解决方法
2014/09/12 Javascript
谈谈impress.js初步理解
2015/09/09 Javascript
浅析Ajax语法
2016/12/05 Javascript
AngularJS中的作用域实例分析
2018/05/16 Javascript
Angularjs实现数组随机排序的方法
2018/10/02 Javascript
python实现在目录中查找指定文件的方法
2014/11/11 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python绘制简单彩虹图
2018/11/19 Python
python实现三次样条插值
2018/12/17 Python
Python3.5迭代器与生成器用法实例分析
2019/04/30 Python
python中bytes和str类型的区别
2019/10/21 Python
Python实现点云投影到平面显示
2020/01/18 Python
python pyg2plot的原理知识点总结
2021/02/28 Python
Python  Asyncio模块实现的生产消费者模型的方法
2021/03/01 Python
几款主流好用的富文本编辑器(所见即所得常用编辑器)介绍
2021/03/17 Javascript
中国最大的潮流商品购物网站:YOHO!BUY有货
2017/01/07 全球购物
玉兰油美国官网:OLAY美国
2018/10/25 全球购物
Juicy Couture Beauty官方网站:香水和化妆品
2019/03/12 全球购物
屈臣氏越南官网:Watsons越南
2021/01/14 全球购物
short s1 = 1; s1 = s1 + 1;有什么错? short s1 = 1; s1 += 1;有什么错?
2014/09/26 面试题
信息技术培训感言
2014/03/06 职场文书
地质灾害防治方案
2014/05/14 职场文书
大学生入党积极分子党校学习思想汇报
2014/10/25 职场文书
2015年转正工作总结范文
2015/04/02 职场文书
2016年端午节寄语
2015/12/04 职场文书
2019毕业典礼主持词!
2019/07/05 职场文书
Java Shutdown Hook场景使用及源码分析
2021/06/15 Java/Android
Mongo服务重启异常问题的处理方法
2021/07/01 MongoDB