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 送你巧克力
上面的类的设计如下图:
代理类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