Python设计模式之代理模式实例详解

作者:Andy冉明 时间:2022-11-20 05:24:29 

本文实例讲述了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程序设计有所帮助。

来源:https://www.cnblogs.com/onepiece-andy/p/python_proxy_pattern.html

标签:Python,设计模式,代理模式
0
投稿

猜你喜欢

  • 使用python socket分发大文件的实现方法

    2022-05-23 10:45:40
  • Mysql支持的数据类型(列类型总结)

    2024-01-28 01:31:31
  • Python全栈之模板渲染详解

    2021-06-07 12:39:48
  • C#编码好习惯小结

    2024-05-02 17:20:20
  • Python实现动态添加类的属性或成员函数的解决方法

    2021-05-13 17:13:41
  • Python爬取网易云音乐热门评论

    2022-06-16 00:24:58
  • Python中POST调用Restful接口示例

    2021-03-14 19:42:19
  • Unity连接MySQL并读取表格数据的实现代码

    2024-01-19 05:20:30
  • 微信小程序开发之获取用户手机号码(php接口解密)

    2023-11-15 03:34:59
  • SQL Server 2008 阻止保存要求重新创建表的更改问题的设置方法

    2024-01-14 13:53:03
  • 使用Pandas的Series方法绘制图像教程

    2023-12-12 17:52:25
  • python GUI库图形界面开发之PyQt5不规则窗口实现与显示GIF动画的详细方法与实例

    2023-09-20 17:59:32
  • Golang栈结构和后缀表达式实现计算器示例

    2024-05-02 16:25:09
  • PHP程序员玩转Linux系列 nginx初学者引导

    2023-11-21 19:51:16
  • VSCode配置python环境及中文问题解决方法

    2022-07-14 15:39:02
  • Pytorch实现图像识别之数字识别(附详细注释)

    2022-04-08 08:12:54
  • ThinkPHP框架实现用户信息查询更新及删除功能示例

    2024-06-07 15:34:11
  • python eval()函数使用详情

    2021-10-17 02:09:23
  • Pycharm内置终端及远程SSH工具的使用教程图文详解

    2023-03-26 09:58:30
  • 用pywin32实现windows模拟鼠标及键盘动作

    2023-07-04 21:26:30
  • asp之家 网络编程 m.aspxhome.com