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判断IP地址合法性的方法实例
Mar 13 Python
python查看FTP是否能连接成功的方法
Jul 30 Python
python实现解数独程序代码
Apr 12 Python
Python set常用操作函数集锦
Nov 15 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
python 巧用正则寻找字符串中的特定字符的位置方法
May 02 Python
Python 删除整个文本中的空格,并实现按行显示
Jul 24 Python
Python迭代器与生成器基本用法分析
Jul 26 Python
Python3中编码与解码之Unicode与bytes的讲解
Feb 28 Python
Python中一般处理中文的几种方法
Mar 06 Python
Python chardet库识别编码原理解析
Feb 18 Python
利用python批量爬取百度任意类别的图片的实现方法
Oct 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字符串函数的总结分析
2013/06/05 PHP
PHP中is_file()函数使用指南
2015/05/08 PHP
thinkPHP中volist标签用法示例
2016/12/06 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
建议大家看下JavaScript重要知识更新
2007/07/08 Javascript
javascript iframe中打开文件,并检测iframe存在否
2008/12/28 Javascript
ajax请求乱码的解决方法(中文乱码)
2014/04/10 Javascript
JavaScript bold方法入门实例(把指定文字显示为粗体)
2014/10/17 Javascript
详解JavaScript数组和字符串中去除重复值的方法
2016/03/07 Javascript
简单了解JavaScript操作XPath的一些基本方法
2016/06/03 Javascript
js从外部获取图片的实现方法
2016/08/05 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
分享vue.js devtools遇到一系列问题
2017/10/24 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
使用Vue.js和Flask来构建一个单页的App的示例
2018/03/21 Javascript
JS与jQuery判断文本框还剩多少字符可以输入的方法
2018/09/01 jQuery
对vue中v-on绑定自定事件的实例讲解
2018/09/06 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
node.js中module模块的功能理解与用法实例分析
2020/02/14 Javascript
小程序按钮避免多次调用接口和点击方案实现(不用showLoading)
2020/04/15 Javascript
微信小程序实现上传多张图片、删除图片
2020/07/29 Javascript
在Python中使用poplib模块收取邮件的教程
2015/04/29 Python
python编程开发之textwrap文本样式处理技巧
2015/11/13 Python
Django添加sitemap的方法示例
2018/08/06 Python
如何利用Pyecharts可视化微信好友
2019/07/04 Python
python获取全国城市pm2.5、臭氧等空气质量过程解析
2019/10/12 Python
PyTorch里面的torch.nn.Parameter()详解
2020/01/03 Python
详解pandas apply 并行处理的几种方法
2021/02/24 Python
英国复古皮包品牌:Beara Beara
2018/07/18 全球购物
您熟悉ORM(Object-Relation Mapping)吗?请谈谈您所理解的ORM
2016/02/08 面试题
汽车运用工程系毕业生自荐信
2013/12/27 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
副总经理岗位职责
2015/02/02 职场文书
关于践行三严三实的心得体会
2016/01/05 职场文书
Mysql排序的特性详情
2021/11/01 MySQL