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 GAE、Django导出Excel的方法
Nov 24 Python
Python IDLE 错误:IDLE''s subprocess didn''t make connection 的解决方案
Feb 13 Python
python网络编程调用recv函数完整接收数据的三种方法
Mar 31 Python
python遍历文件夹下所有excel文件
Jan 03 Python
Python实现的查询mysql数据库并通过邮件发送信息功能
May 17 Python
基于Django框架利用Ajax实现点赞功能实例代码
Aug 19 Python
tensorflow实现加载mnist数据集
Sep 08 Python
详解django中使用定时任务的方法
Sep 27 Python
使用Python实现图像标记点的坐标输出功能
Aug 14 Python
Python使用python-docx读写word文档
Aug 26 Python
Tensorflow实现部分参数梯度更新操作
Jan 23 Python
关于python中模块和重载的问题
Nov 02 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通过session id 实现session共享和登录验证的代码
2012/06/03 PHP
利用PHP扩展vld查看PHP opcode操作步骤
2013/03/04 PHP
php读取文件内容到数组的方法
2015/03/16 PHP
PHP邮箱验证示例教程
2016/06/01 PHP
php 使用fopen函数创建、打开文件详解及实例代码
2016/09/24 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP实现的简单AES加密解密算法实例
2017/05/29 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
javascript 写类方式之三
2009/07/05 Javascript
学习ExtJS(一) 之基础前提
2009/10/07 Javascript
js控制input输入字符解析
2013/12/27 Javascript
HTML5实现留言和回复页面样式
2015/07/22 Javascript
Javascript中call,apply,bind方法的详解与总结
2016/12/12 Javascript
用Nodejs搭建服务器访问html、css、JS等静态资源文件
2017/04/28 NodeJs
Vue 组件注册实例详解
2019/02/23 Javascript
微信小程序--获取用户地理位置名称(无须用户授权)的方法
2019/04/29 Javascript
vue3自定义dialog、modal组件的方法
2021/01/04 Vue.js
[02:43]中国五虎出征TI3视频
2013/08/02 DOTA
django实现用户登陆功能详解
2017/12/11 Python
python实现内存监控系统
2021/03/07 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
python解析xml简单示例
2019/06/21 Python
Python imread、newaxis用法详解
2019/11/04 Python
python 基于dlib库的人脸检测的实现
2019/11/08 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
Django中Aggregation聚合的基本使用方法
2020/07/09 Python
css3和jquery实现的可折叠导航菜单适合放在手机网页的导航菜单
2014/09/02 HTML / CSS
白宫黑市官网:White House Black Market
2016/11/17 全球购物
男女时尚与复古风格在线购物:RoseGal(全球免费送货)
2017/07/19 全球购物
迪奥美国官网:Dior美国
2019/12/07 全球购物
土木工程毕业生推荐信
2013/10/28 职场文书
高校自主招生自荐信
2013/12/09 职场文书
企业党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年化验员工作总结
2014/11/18 职场文书
培训师岗位职责
2015/02/14 职场文书
投诉信回复范文
2015/07/03 职场文书