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 相关文章推荐
在DigitalOcean的服务器上部署flaskblog应用
Dec 19 Python
Python编写一个闹钟功能
Jul 11 Python
Python排序搜索基本算法之希尔排序实例分析
Dec 09 Python
Python自动化运维_文件内容差异对比分析
Dec 13 Python
网红编程语言Python将纳入高考你怎么看?
Jun 07 Python
python实现三次样条插值
Dec 17 Python
Appium+Python自动化测试之运行App程序示例
Jan 23 Python
Python多线程threading模块用法实例分析
May 22 Python
利用selenium爬虫抓取数据的基础教程
Jun 10 Python
Python进程,多进程,获取进程id,给子进程传递参数操作示例
Oct 11 Python
Tensorflow的梯度异步更新示例
Jan 23 Python
关于python的缩进规则的知识点详解
Jun 22 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
是否存在第一台收音机的说法
2021/03/01 无线电
新版mysql+apache+php Linux安装指南
2006/10/09 PHP
php通过COM类调用组件的实现代码
2012/01/11 PHP
PHP字符串的递增和递减示例介绍
2014/02/11 PHP
PHP生成条形图的方法
2014/12/10 PHP
Linux环境下php实现给网站截图的方法
2016/05/03 PHP
PHP实现模拟http请求的方法分析
2017/12/20 PHP
php获取微信共享收货地址的方法
2017/12/21 PHP
Prototype1.6 JS 官方下载地址
2007/11/30 Javascript
js操作ajax返回的json的注意问题!
2010/02/23 Javascript
JS实现字体选色板实例代码
2013/11/20 Javascript
JavaScript动态改变div属性的实现方法
2015/07/22 Javascript
jQuery mobile 移动web(6)
2015/12/20 Javascript
vue.js中$watch的用法示例
2016/10/04 Javascript
js实现上传文件添加和删除文件选择框
2016/10/24 Javascript
js eval函数使用,js对象和字符串互转实例
2017/03/06 Javascript
JavaScript事件方法(实例讲解)
2017/06/27 Javascript
jQuery实现导航栏头部菜单项点击后变换颜色的方法
2017/07/19 jQuery
echarts鼠标覆盖高亮显示节点及关系名称详解
2018/03/17 Javascript
Vue实现自定义下拉菜单功能
2018/07/16 Javascript
微信小程序-form表单提交代码实例
2019/04/29 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
javascript用defineProperty实现简单的双向绑定方法
2020/04/03 Javascript
微信小程序实现导航栏和内容上下联动功能代码
2020/06/29 Javascript
Django实现支付宝付款和微信支付的示例代码
2018/07/25 Python
python多进程使用及线程池的使用方法代码详解
2018/10/24 Python
Python实现中值滤波去噪方式
2019/12/18 Python
pycharm解决关闭flask后依旧可以访问服务的问题
2020/04/03 Python
django 实现后台从富文本提取纯文本
2020/07/02 Python
使用OpenCV校准鱼眼镜头的方法
2020/11/26 Python
有影响力的人、名人和艺术家的官方商品:Represent
2019/11/26 全球购物
星空联盟C# .net笔试题
2014/12/05 面试题
政治思想表现评语
2014/05/04 职场文书
社会实践先进工作者事迹材料
2014/05/06 职场文书
工作能力自我评价2015
2015/03/05 职场文书
2016年党员公开承诺书格式范文
2016/03/24 职场文书