Python设计模式:代理模式(python代理ip怎么用)
off999 2024-10-27 11:57 39 浏览 0 评论
前言
前期分享过几篇关于 Python 实现各种设计模式的文章,包含:
观察者模式:Python设计模式:观察者模式
原型模式:Python设计模式:原型模式
门面模式:Python设计模式:门面模式
工厂方法模式:Python设计模式:工厂方法模式
简单工厂模式:Python设计模式:简单工厂模式
今天继续给大家分享设计模式的内容,今天的主题是:Python 如何实现代理模式。
代理模式
1、定义
提到代理这个词汇,应该很多人都不陌生,甚至会有很多人用过。互联网的我们,应该接触的比较多的代理主要是在网络通信方面。
例如:
我们不能直接访问Google、Facebook 等网站,但是可以通过搭建代理服务器的方式实现我们所用的网络与目标主机之间的通信,这就是网络中代理的概念。
其实用一句话来概括代理的含义就是:
允许一个网络终端(一般为客户端)通过这个服务与另一个网络终端(一般为服务器)进行非直接的连接。
或者是指一个介于寻求方和提供方之间的中介系统或者说是一种模式。
2、使用场景
代理模式使用的场景比较多,例如:
1.它能够以更简单的方式表示一个复杂的系统。
2.它可以使实际对象的安全性更高。
3.它可以为不同服务器上的远程对象提供本地的接口。
4.它可以为消耗大量内存的对象提供一个轻量级的句柄。
代码实现
1import time
2import datetime
3from abc import ABC,abstractmethod
4
5
6#定义一个User类,用于模拟登录操作
7class User:
8 def __init__(self, username, password):
9 self.username = username
10 self.password = password
11
12 def get_user_username(self):
13 return self.username
14
15 def get_user_password(self):
16 return self.password
1、定义业务抽象接口类
1class Bussiness(ABC):
2 @abstractmethod
3 def request(self):
4 pass
5
6 @abstractmethod
7 def deal(self):
8 pass
2、定义核心业务逻辑类,来现实Bussiness的抽象类定义的逻辑
1class Real_Bussiness(Bussiness):
2 def request(self,user:User):
3 print("核心业务逻辑处理开始")
4 #这里只是模拟了先要做一次登录的权限校验验证,对于登录后的逻辑就空缺了,这里只是演示代理模式的原理
5 if(self.login(user.get_user_username(),user.get_user_password())):
6 self.deal()
7 print("核心业务逻辑处理结束")
8
9 def login(self,username,password):
10 #这里对于用户的校验我是写死的,一般都是从db中获取是否匹配的
11 if username== "admin" and password== "123456":
12 print("login is success!!!")
13 return True
14 else:
15 return False
16
17 #此方法是登录后要做的另一个业务场景,这里就不多写了,只是模拟一下
18 def deal(self):
19 time.sleep(0.5)
3、定义 proxy 代理类,将业务请求转发给业务类,并在业务处理前中后做一些额外的处理
比如:增加日志的输出,增加处理的时长等
1class Proxy(Bussiness):
2 def __init__(self):
3 self._rb=Real_Bussiness()
4
5 def request(self,user:User):
6 print("开始发送请求")
7 start_time=datetime.datetime.now()
8 self._rb.request(user)
9 end_time=datetime.datetime.now()
10 print("请求处理完成")
11 print("本次请求共耗时:",end_time-start_time)
12
13 #此方法是登录后要做的另一个业务场景,这里就不多写了,只是模拟一下
14 def deal(self):
15 time.sleep(0.5)
16
17
18
19if __name__ == '__main__':
20 user=User("admin","123456")
21
22 #直接调用业务处理逻辑
23 rb=Real_Bussiness()
24 rb.request(user)
25 print("*"*30)
26 #通过代理方式来调用业务处理逻辑
27 pr=Proxy()
28 pr.request(user)
4、输出结果
本次处理的输出结果是( print 结果):
核心业务逻辑处理开始
login is success!!!
核心业务逻辑处理结束
开始发送请求
核心业务逻辑处理开始
login is success!!!
核心业务逻辑处理结束
请求处理完成
本次请求共耗时:0:00:00.514653
相关推荐
- 无线网登录密码忘记了怎么办
-
1、先查看一下wifi链接的网关是多少,如果是默认的多为192.168.1.1或者192.168.0.1这个地址。2、然后打开ie浏览器,输入查看到的网关地址,比如192.168.1.1,会弹出登录对...
- 微软重装系统(微软重装系统工具)
-
win10重装跳过账号登录的方法步骤如下:1、重装系统到“登录你的Microsoft账户”这一界面后,点击下方的“创建一个新账户”。2、接着进入...
- 迷你世界激活码生成器下载(迷你世界激活码生成器app下载)
-
序列号相当于导航的身份证,表示该导航对应的版本和机型。是厂家随机编号的,说不出什么意思。在Excel中,您可以使用以下方法快速生成序列号:方法一:填充法1.在第一个目标单元格中输入起始序号(No)值...
-
- 手机怎么设置wifi网络(手机如何设置wifi网络)
-
1、在手机上打开浏览器,在浏览器中输入192.168.1.1,并点击访问。2、在跳转的界面中,输入无线网络的管理名称和管理密码,并点击下方的确认。3、之后设置无线的名称和无线密码,设置完成后,点击下方的保存。4、之后即可完成设置,路由器重启...
-
2025-12-17 04:51 off999
- win11分区教程(win11磁盘分区形式)
-
在安装win11时,可以选择自定义分区,进入磁盘管理界面,选择要安装win11的磁盘,点击新建分区,设置分区大小和分区盘符,注意不要覆盖原有数据分区。建议将系统分区和数据分区分开,以便备份和维护。安装...
- win7双系统怎么切换(双系统win7切换win10)
-
要切换到其他操作系统,必须使用另一个启动设备或安装系统。以下是一些步骤:1.获取安装媒体(光盘或USB驱动器),包含您要安装的操作系统。2.在Windows7上打开电脑,将安装媒体插入计算机。3...
- project2010激活码(project2010永久激活码)
-
首先我们在网上下载project2010,因为project2010是付费使用的,所以我们可以先使用试用版,试用版期限是30天。首先我们来创建一个项目,然后使用project2010来进行管理。我们可...
- 迈克菲无法卸载(迈克菲无法卸载怎么解决)
-
一,找到迈克菲的图标二,右键,点击更改设置——实时扫描三,点击关闭,即可。1,控制面板中-管理工具-服务-停止MCAFEEFRAMEWORKMANAGER服务2,开始中—运行—输入cmd—输入“C...
- 爱普生打印机驱动(爱普生打印机驱动怎么安装)
-
1.首先进入爱普生网站。找到驱动以及手册证书下载2.选择打印机的类型,勾选正确的打印机型号。3.根据自己的电脑操作系统选择对应的软件版本点击下载。4.下载了LQ-630KII的驱动,双击运行。5.运行...
- windows7显示不是正版怎么办
-
不必担心,是不是正版影响并不大,不会影响你正常使用电脑,无非就是心里对于正版和盗版的道德观念会有点小执念罢了,但这些都不影响系统的正常使用。如果你非要安装正版,可以去买个正版光盘,安装系统后输入正版激...
- vivo手机锁屏密码忘了怎么办
-
如下:1输入密码在vivo的锁屏页面,连续输入五次错误密码,弹出新页面。2/4选择忘记密码在新的页面中,找到页面中的忘记密码这个选项,点击它。3/4进行身份验证切换到身份验证的页面后,回答两个问题,再...
-
- 微软官网免费下载win7吗(微软官网免费下载win10是真的吗)
-
最简单的方法就是,下载完镜像文件后,直接把镜像文件解压,解压到非C盘,然后在解压文件里面找到setup.exe,点击运行即可。安装系统完成后,在C盘找到一个Windows.old(好几个GB,是旧系统打包在这里,垃圾文件了)删除即可。扩展资...
-
2025-12-17 00:51 off999
- windows7的密钥在哪里(windows7密钥在哪里可以找到)
-
查看Windows7的密钥,你可以按照以下步骤进行操作:在键盘上按下Win+R组合键,打开运行窗口。在运行窗口中输入"regedit",然后点击确定,打开注册表编辑器。在注册表编...
- 360极速浏览器打不开网页(360极速浏览器经常打不开未响应)
-
先打开任务管理器结束360浏览器的所有进程(如果有).再尝试点击启动.如果还不行,重启电脑再试,如果还不行,执行杀毒检测和磁盘扫描,并卸载重装浏览器.强制360浏览器以极速模式打开页面方法如下:1、...
- win7系统图标(win7系统图标网络开关灰色)
-
1/6首先点击桌面右下角Windows,再点击【控制面板】2/6来到控制面板页面,我们再点击【个性化】3/6来到个性化页面,我们再点击左侧【更改桌面图标】4/6弹出桌面图标设置对话框,我们根据实际需要...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
python入门到脱坑 输入与输出—str()函数
-
宝塔面板如何添加免费waf防火墙?(宝塔面板开启https)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
使用 python-fire 快速构建 CLI_如何搭建python项目架构
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
