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中PDB模块中的命令来调试Python代码的教程
Mar 30 Python
python3+PyQt5+Qt Designer实现堆叠窗口部件
Apr 20 Python
Django跨域请求问题的解决方法示例
Jun 16 Python
python绘制直线的方法
Jun 30 Python
django中账号密码验证登陆功能的实现方法
Jul 15 Python
Django forms表单 select下拉框的传值实例
Jul 19 Python
python django下载大的csv文件实现方法分析
Jul 19 Python
python批量读取文件名并写入txt文件中
Sep 05 Python
解决在keras中使用model.save()函数保存模型失败的问题
May 21 Python
Django URL参数Template反向解析
Nov 24 Python
Python实现天气查询软件
Jun 07 Python
Python中Matplotlib的点、线形状、颜色以及绘制散点图
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
smarty的保留变量问题
2008/10/23 PHP
php实现无限级分类实现代码(递归方法)
2011/01/01 PHP
PHP中怎样防止SQL注入分析
2014/10/23 PHP
php新浪微博登录接口用法实例
2014/12/23 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
PHP简单遍历对象示例
2016/09/28 PHP
javascript编程起步(第六课)
2007/01/10 Javascript
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
jQuery 自动增长的文本输入框实现代码
2010/04/02 Javascript
jQuery LigerUI 使用教程入门篇
2012/01/18 Javascript
javascript中input中readonly和disabled区别介绍
2012/10/23 Javascript
原生js实现查找/添加/删除/指定元素的class
2013/04/12 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
2014/01/27 Javascript
JavaScript和HTML DOM的区别与联系及Javascript和DOM的关系
2015/11/15 Javascript
深入理解Commonjs规范及Node模块实现
2017/05/17 Javascript
vue 实现LED数字时钟效果(开箱即用)
2019/12/08 Javascript
浅谈javascript事件环微任务和宏任务队列原理
2020/09/12 Javascript
[01:55]《走出家门看比赛》——DOTA2 2015国际邀请赛同城线下观战
2015/07/18 DOTA
[43:47]DOTA2上海特级锦标赛主赛事日 - 4 败者组第四轮#2 MVP.Phx VS Fnatic第一局
2016/03/05 DOTA
python采集博客中上传的QQ截图文件
2014/07/18 Python
python实现简单的TCP代理服务器
2014/10/08 Python
python检测某个变量是否有定义的方法
2015/05/20 Python
Python编码爬坑指南(必看)
2016/06/10 Python
python实现百度语音识别api
2018/04/10 Python
利用django-suit模板添加自定义的菜单、页面及设置访问权限
2018/07/13 Python
python pandas实现excel转为html格式的方法
2018/10/23 Python
CSS3实现文字描边的2种方法(小结)
2020/02/14 HTML / CSS
Pretty Green美国:英式摇滚服饰风格代表品牌之一
2019/01/23 全球购物
考博自荐信
2013/10/25 职场文书
《颐和园》教学反思
2014/02/26 职场文书
《哪吒闹海》教学反思
2014/02/28 职场文书
青春寄语大全
2014/04/09 职场文书
心得体会的写法
2014/09/05 职场文书
群众路线四风对照检查材料
2014/11/04 职场文书
离婚上诉状范文
2015/05/23 职场文书
爱国主义主题班会
2015/08/14 职场文书