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模拟登录百度代码分享(获取百度贴吧等级)
Dec 27 Python
python多进程和多线程究竟谁更快(详解)
May 29 Python
浅谈Python实现贪心算法与活动安排问题
Dec 19 Python
Python Django的安装配置教程图文详解
Jul 17 Python
python+tkinter实现学生管理系统
Aug 20 Python
如何在mac环境中用python处理protobuf
Dec 25 Python
OpenCV 表盘指针自动读数的示例代码
Apr 10 Python
python中如何进行连乘计算
May 28 Python
Ubuntu权限不足无法创建文件夹解决方案
Nov 14 Python
python通过cython加密代码
Dec 11 Python
python 用pandas实现数据透视表功能
Dec 21 Python
Python编程中Python与GIL互斥锁关系作用分析
Sep 15 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中iconv函数转码时截断字符问题的解决方法
2015/01/21 PHP
PHP解耦的三重境界(浅谈服务容器)
2017/03/13 PHP
PHP实现的DES加密解密封装类完整实例
2017/04/29 PHP
用JavaScript对JSON进行模式匹配(Part 1-设计)
2010/07/17 Javascript
ajax 同步请求和异步请求的差异分析
2011/07/04 Javascript
JavaScript跨域方法汇总
2014/10/16 Javascript
js判断滚动条是否已到页面最底部或顶部实例
2014/11/20 Javascript
javascript消除window.close()的提示窗口
2015/05/20 Javascript
javascript常见数据验证插件大全
2015/08/03 Javascript
JS中生成随机数的用法及相关函数
2016/01/09 Javascript
ng-options和ng-checked在表单中的高级运用(推荐)
2017/01/21 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
vue 配置多页面应用的示例代码
2018/10/22 Javascript
基于Angular 8和Bootstrap 4实现动态主题切换的示例代码
2020/02/11 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
2020/09/02 Javascript
js实现拖拽与碰撞检测
2020/09/18 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
[02:41]DOTA2亚洲邀请赛小组赛第三日 赛事回顾
2015/02/01 DOTA
Python简单实现阿拉伯数字和罗马数字的互相转换功能示例
2018/04/17 Python
python创建学生成绩管理系统
2019/11/22 Python
python两个_多个字典合并相加的实例代码
2019/12/26 Python
pytorch标签转onehot形式实例
2020/01/02 Python
纯CSS实现聊天框小尖角、气泡效果
2014/04/04 HTML / CSS
猫咪家具:CatsPlay
2018/11/03 全球购物
Final类有什么特点
2012/04/25 面试题
java程序员面试交流
2012/11/29 面试题
期中考试后的反思
2014/02/08 职场文书
《火烧云》教学反思
2014/04/12 职场文书
霸气队列口号
2014/06/18 职场文书
党员自我剖析材料
2014/08/31 职场文书
2015年医生个人工作总结
2015/04/25 职场文书
2015年教师学期工作总结
2015/04/30 职场文书
小学大队委竞选口号
2015/12/25 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript
Python爬虫之自动爬取某车之家各车销售数据
2021/06/02 Python
java实现对Hadoop的操作
2021/07/01 Java/Android