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爬虫之打包生成exe文件
Nov 06 Python
Python中的引用和拷贝浅析
Nov 22 Python
对于Python的Django框架使用的一些实用建议
Apr 03 Python
python 递归遍历文件夹,并打印满足条件的文件路径实例
Aug 30 Python
Python xlwt设置excel单元格字体及格式
Apr 18 Python
对pandas中两种数据类型Series和DataFrame的区别详解
Nov 12 Python
pyQT5 实现窗体之间传值的示例
Jun 20 Python
python使用pygame实现笑脸乒乓球弹珠球游戏
Nov 25 Python
python dataframe NaN处理方式
Dec 26 Python
使用python 的matplotlib 画轨道实例
Jan 19 Python
Python可变对象与不可变对象原理解析
Feb 25 Python
Django model class Meta原理解析
Nov 14 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 set_magic_quotes_runtime() 函数过时解决方法
2010/07/08 PHP
PHP对接微信公众平台消息接口开发流程教程
2014/03/25 PHP
php中error与exception的区别及应用
2014/07/28 PHP
示例详解Laravel重置密码代码重构
2016/08/10 PHP
php正则去除网页中所有的html,js,css,注释的实现方法
2016/11/03 PHP
PHP实现图片批量打包下载功能
2017/03/01 PHP
PHP计算近1年的所有月份
2017/03/13 PHP
PHP实现按之字形顺序打印二叉树的方法
2018/01/16 PHP
PHP实现一个轻量级容器的方法
2019/01/28 PHP
Thinkphp5.0 框架视图view的比较标签用法分析
2019/10/12 PHP
jquery 简单应用示例总结
2013/08/09 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
读Javascript高性能编程重点笔记
2016/12/21 Javascript
React学习笔记之事件处理(二)
2017/07/02 Javascript
vue中使用refs定位dom出现undefined的解决方法
2017/12/21 Javascript
详解js动态获取浏览器或页面等容器的宽高
2019/03/13 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
Python开发微信公众平台的方法详解【基于weixin-knife】
2017/07/08 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
pycharm 主题theme设置调整仿sublime的方法
2018/05/23 Python
Python3删除排序数组中重复项的方法分析
2019/01/31 Python
django 连接数据库 sqlite的例子
2019/08/14 Python
Python调用shell命令常用方法(4种)
2020/05/11 Python
python爬虫scrapy框架的梨视频案例解析
2021/02/20 Python
努比亚手机官网:nubia
2016/10/06 全球购物
ECOSUSI官网:女式皮革背包
2019/09/27 全球购物
HomeAway英国:全球领先的度假租赁在线市场
2020/02/03 全球购物
生产车间实习自我鉴定
2013/09/23 职场文书
区域总监的岗位职责
2013/11/21 职场文书
文化活动实施方案
2014/03/28 职场文书
2014年平安创建工作总结
2014/11/24 职场文书
2015仓库保管员年终工作总结
2015/05/13 职场文书
K8s部署发布Golang应用程序的实现方法
2021/07/16 Golang
Spring中的使用@Async异步调用方法
2021/11/01 Java/Android
Win11电源已接通但未充电怎么办?Win11电源已接通未充电的解决方法
2022/04/05 数码科技
Vue router配置与使用分析讲解
2022/12/24 Vue.js