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常用随机数与随机字符串方法实例
Apr 09 Python
python实现图片变亮或者变暗的方法
Jun 01 Python
django实现用户登陆功能详解
Dec 11 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
Django实战之用户认证(初始配置)
Jul 16 Python
对python中数组的del,remove,pop区别详解
Nov 07 Python
详解python--模拟轮盘抽奖游戏
Apr 12 Python
python之yield和Generator深入解析
Sep 18 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
使用pyplot.matshow()函数添加绘图标题
Jun 16 Python
python爬虫看看虎牙女主播中谁最“顶”步骤详解
Dec 01 Python
python绘图pyecharts+pandas的使用详解
Dec 13 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
substr()函数中文版
2006/10/09 PHP
又一个php 分页类实现代码
2009/12/03 PHP
php cookie名使用点号(句号)会被转换
2014/10/23 PHP
thinkphp区间查询、统计查询与SQL直接查询实例分析
2014/11/24 PHP
ThinkPHP模版引擎之变量输出详解
2014/12/05 PHP
解决php-fpm.service not found问题的办法
2017/06/06 PHP
jquery.tmpl JQuery模板插件
2011/10/10 Javascript
使用js判断TextBox控件值改变然后出发事件
2014/03/07 Javascript
Window.Open如何在同一个标签页打开
2014/06/20 Javascript
浅谈javascript 迭代方法
2015/01/21 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
javascript中键盘事件用法实例分析
2015/01/30 Javascript
js实现浏览本地文件并显示扩展名的方法
2015/08/17 Javascript
基于javascript实现漂亮的页面过渡动画效果附源码下载
2015/10/26 Javascript
jQuery实现彩带延伸效果的网页加载条loading动画
2015/10/29 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
2017/09/30 Javascript
checkbox在vue中的用法小结
2018/11/13 Javascript
jQuery.parseJSON()函数详解
2019/02/28 jQuery
详解element-ui设置下拉选择切换必填和非必填
2019/06/17 Javascript
Python读写Redis数据库操作示例
2014/03/18 Python
Python下的常用下载安装工具pip的安装方法
2015/11/13 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
在Python中获取两数相除的商和余数方法
2018/11/10 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
python3.x实现base64加密和解密
2019/03/28 Python
python队列Queue的详解
2019/05/10 Python
Python使用OpenPyXL处理Excel表格
2020/07/02 Python
铲车司机岗位职责
2014/03/15 职场文书
2015年元旦文艺汇演主持词
2014/03/26 职场文书
机关党总支领导班子整改方案
2014/09/20 职场文书
银行反四风对照检查材料
2014/09/29 职场文书
教师党的群众路线教育实践活动学习心得体会
2014/10/30 职场文书
2014年城管工作总结
2014/11/20 职场文书
2014年挂职干部工作总结
2014/12/06 职场文书
中国古代史学名著《战国策》概述
2019/08/09 职场文书
golang中的struct操作
2021/11/11 Golang