Python实现适配器模式、装饰器模式、代理模式

OpenHarmony下I2C开发实战:协议原理、驱动实现与排障指南 嵌入式开发中,I2C是最常用的两线制串行总线之一,屏幕、触摸屏、传感器等设备都依赖它进行通信。其核心原理建立在SDA数据线、SCL时钟线以及设备地址和ACK应答机制之上,而时钟拉伸、上拉电阻等细节往往决定了通信是否稳定。理解这些基础,对于高效开发驱动和排查异常至关重要。在实际工程中,利用OpenHarmony提供的HDF驱动框架或用户态API,可以快速实现OLED、光照传感器等外设的读写。围绕OpenHarmony环境下的I2C开发,从协议原理、驱动实现到常见故障排查,系统梳理完整路径,为嵌入式开发者提供了 阅读详情

今天介绍三种结构型设计模式:适配器模式、装饰器模式、代理模式

适配器模式

适配器模式,用于将一个类的接口转换为另一个接口,以满足客户端的需求。在Python中,适配器模式可以通过继承或组合来实现。

以下是一个使用继承实现适配器模式的示例:

class Target:
    def request(self):
        pass

class Adaptee:
    def specific_request(self):
        pass

class Adapter(Target, Adaptee):
    def request(self):
        self.specific_request()

在上面的示例中,Target是目标接口,Adaptee是需要适配的类,Adapter是适配器类,它继承了Target和Adaptee,并实现了request方法,将specific_request方法转换为request方法。

装饰器模式

装饰器模式,用于动态地给一个对象添加额外的功能,而不需要修改原始类的代码。在Python中,装饰器模式可以通过函数和类来实现。

以下是一个使用函数实现装饰器模式的示例:

def decorator(func):
    def wrapper(*args, **kwargs):
        # 在函数调用前添加额外的功能
        result = func(*args, **kwargs)
        # 在函数调用后添加额外的功能
        return result
    return wrapper

@decorator
def target():
    pass

在上面的示例中,decorator是装饰器函数,它接受一个函数作为参数,并返回一个新的函数wrapper,wrapper函数在调用原始函数之前和之后添加了额外的功能。@decorator语法是Python中的语法糖,它等同于target = decorator(target)。

代理模式

代理模式,用于控制对另一个对象的访问。在Python中,代理模式可以通过继承或组合来实现。

以下是一个使用组合实现代理模式的示例:

class Subject:
    def request(self):
        pass

class RealSubject(Subject):
    def request(self):
        pass

class Proxy(Subject):
    def __init__(self):
        self.real_subject = RealSubject()

    def request(self):
        # 在调用真实主题之前或之后添加额外的功能
        self.real_subject.request()

在上面的示例中,Subject是主题接口,RealSubject是真实主题类,Proxy是代理类,它包含一个真实主题对象,并实现了request方法,可以在调用真实主题之前或之后添加额外的功能。

学习资源推荐
除了上述分享,学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述
👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以V扫描下方二维码联系领取
【保证100%免费
】

python 代理模式和装饰器总结 文章目录代理模式proxy pattern常见类型装饰器函数式编程高阶函数返回函数偏函数闭包装饰器装饰器类装饰器的顺序property类方法与静态方法 代理模式 proxy pattern 在访问某个对象之前执行一个或多个重要的额外操作 访问敏感信息或关键功能需要具备足够的权限 将计算成本较高的对象创建过程延迟到用户首次真正使用时才进行 常见类型 远程代理:实际存在于不同地址空间的对象在本地的代理者 虚拟代理:用于惰性求值,将一个大计算量对象的创建延迟到真正需要的时候进行 保护/防护代理:控制对敏感对 阅读详情

相关推荐

遥感常用相关指数和计算方法(植被指数/水体指数/雪和冰指数/矿物指数/地表温度指数/云和阴影指数/农业指数)

遥感常用相关指数和计算方法(植被指数/水体指数/雪和冰指数/矿物指数/地表温度指数/云和阴影指数/农业指数)

m0_64361769的博客 1万+

理解Python的装饰器 decorator

既然是装饰器, 肯定就是跟设计模式中的装饰模式有关了装饰器就是python 中对装饰模式的一种注解实现,令其可以对其他函数进行一些功能上的增强。住这里的增强并不是真正的修改函数的业务逻辑, 只是前后增加一些步骤。

nvd11的专栏 880

Kettle下载与安装教程【保姆版】

Kettle简介 Kettle最早是一个开源的ETL工具,全称为KDE Extraction, Transportation, Transformation and Loading Environment。后来Kettle重命名为Pentaho Data Integration 。 它由Java开发,支持跨平台运行,其特性包括:支持100%无编码、拖拽方式开发ETL数据管道;可对接包括传统数据库、文件、大数据平台、接口、流数据等数据源;支持ETL数据管道加入机器学习算法。 主要功能 Pentaho D

weixin_43407520的博客 12万+

python中的装饰器

def 装饰器名称(x(该参数用于接收被代理函数。参数与参数名无关)):def 代理函数名称(*args,**kwargs):# args是一个元组,里面为被代理函数所需的所有参数。# 这里写被代理函数执行前的逻辑# 这里写被代理函数执行后的逻辑return result# 这里要返回被代理函数的结果(固定写法)def 装饰器其他函数(该函数参数):returndef 装饰器其他函数(该函数参数):return。

weixin_52078607的博客 251

深入解析Incapsula reese84的生成机制与绕过策略

本文深入解析了Incapsula reese84的生成机制与绕过策略。reese84是一种基于客户端JavaScript挑战的Web安全防护,通过动态算法收集浏览器指纹并生成令牌Cookie。文章详细拆解了其两步验证流程,并提供了使用无头浏览器、逆向JS模拟请求以及Token维护等实战绕过方法,帮助开发者和安全研究人员应对自动化访问拦截。

weixin_29256771的博客 443

RL调参侠之BipedalWalker BipedalWalkerHardcore SAC

前几天用PPO训练了个很一般的agent: RL调参侠之BipedalWalker PPO 我看SpinningUp上面说PPO和SAC是两个领域里各自的State_of_the_art的方法,所以就打算跑SAC试试看,之前因为Open AI Five的原因,一直感觉PPO很牛掰,实际上现在很多自动驾驶的算法也是用PPO在跑,毕竟有一个“必定能够提升期望”的理论保证在这里,我理解这对做项目很大的诱惑。 不过我跑出来的结果明显是SAC更好。 调参侠时间 策略熵的权重alpha用的0.2,我一开始没有看SAC的

weixin_48370148的博客 2101

python与设计模式之代理模式和装饰器模式

python与设计模式之代理模式 代理模式定义如下:为某对象提供一个代理,以控制对此对象的访问和控制。代理模式在使用过程中,应尽量对抽象主题类进行代理,而尽量不要对加过修饰和方法的子类代理。 代理模式是一种使用频率非常高的模式,在多个著名的开源软件和当前多个著名的互联网产品后台程序中都有所应用。下面我们用一个抽象化的简单例子,来说明代理模式。 首先,构造一个网络服务器: #该...

薛定谔的猫-前端领域 867

工业相机——靶面尺寸、像元尺寸、分辨率 、传感器尺寸

由Sensor对角线长度表示,单位英寸,这里的1英寸=16mm。——靶面尺寸为宽12.7mm*高9.6mm,对角线16mm。——靶面尺寸为宽8.8mm*高6.6mm,对角线11mm。——靶面尺寸为宽7.2mm*高5.4mm,对角线9mm。——靶面尺寸为宽6.4mm*高4.8mm,对角线8mm。——靶面尺寸为宽4.8mm*高3.6mm,对角线6mm。——靶面尺寸为宽3.2mm*高2.4mm,对角线4mm。——靶面尺寸为宽14*高10.5mm,对角线17mm。

程序员,他们想的是什么?他们想的永远都是技术,他们崇尚的也永远都是技术。 9607

经典Python常用设计模式总结详细举例

抽象工厂模式是一种创建型设计模式,它为创建一组相关或相互依赖的对象提供了一个接口,而无需指定它们的具体类。这样,客户端代码只需与抽象工厂接口交互,就可以获得所需产品家族的实例,而不必关心具体产品的创建细节。# 定义抽象产品接口passpass# 定义具体产品(产品A系列)# 定义具体产品(产品B系列)# 定义抽象工厂接口passpass# 定义具体工厂(产品家族1)# 定义具体工厂(产品家族2)# 客户端代码。

weixin_47139994的博客 992

结构优化软件:OptiStruct_(11).拓扑优化

在OptiStruct中,设计空间可以通过定义设计区域来实现。设计区域是结构中可以进行材料变化的部分。几何区域:通过几何选择工具选择特定的区域。网格区域:通过网格选择工具选择特定的单元。假设我们有一个简单的梁结构模型,网格文件为beam.fem。我们希望在梁的中部进行拓扑优化,以减轻重量并保持刚度。

kkchenjj的博客 1368

苹果生态最佳搭档:Mac mini + OpenClaw + iPhone 远程控制

本文详细介绍如何通过iPhone远程控制Mac mini上的OpenClaw应用,打造高效苹果生态工作流。内容包括:1) 苹果生态整合优势,包括AirDrop、Handoff等功能对比;2) Mac mini配置步骤,涵盖SSH/VNC设置、网络优化及Docker部署OpenClaw;3) iPhone端SSH/VNC客户端选择与Tailscale内网穿透配置;4) 详细SSH密钥设置与连接测试方法。通过这套方案,用户可实现跨设备无缝控制OpenClaw应用,提升远程工作效率。(149字)

一键难忘的博客 793

设计模式-结构型模式(适配器、桥、组合、装饰器、外观、亨元、代理)

通过使用 Proxy 对象,我们可以附加一些额外的功能,例如记录请求日志或缓存数据,而不改变 RealSubject 的代码。如,定义了一个英文翻译类,现需适配成中文翻译类,那么就可以使用适配器模式,在构造方法中构造英文类,再去实现中文方法。如,在一个文件系统中,一个文件夹可以包含多个文件和子文件夹,可用组合模式来表示这个文件系统的结构。例如,在游戏中有多种武器和角色,我们可以使用桥接模式将武器和角色分离开来,从而可自由地组合它们。提供一个简单的接口,用于访问底层复杂系统的一些功能。

lxd_max的博客 614

高通SA8295P音频接口深度解析:全面掌握SA8295P的LS-I2S、PCM/TDM与高性能音频处理技术设计

SA8295P提供丰富的音频接口选项,包括LS-I2S、PCM/TDM和HS-I2S接口,具备灵活的配置选项,适合各种高保真音频和高速数据传输应用。结合LS-I2S和PCM/TDM接口:在复杂的音频编解码器设计中,可结合使用LS-I2S和PCM/TDM接口,以处理和传输不同的音频数据流。使用HS-I2S接口:在软件定义无线电(SDR)系统中,高速I2S接口可处理高速数据流,如无线电信号的解码和处理。LS-I2S(低速I2S)接口是SA8295P的一部分,提供了丰富的音频数据传输选项。

weixin_43199439的博客 1406

编程与数学 02-017 Python 面向对象编程 21课题、通用设计模式

本文介绍了 Python 面向对象编程中的 10 种常用设计模式,包括单例模式、工厂模式、策略模式、观察者模式、装饰器模式、代理模式、模板方法模式、适配器模式、命令模式和组合模式。每种模式都通过示例代码展示了其实现方式、优点、缺点及适用场景。这些设计模式能够有效提高代码的可维护性、可扩展性和可读性,帮助开发者更好地解决实际问题。

明月看潮生的博客 1370

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

设计模式之结构型设计模式详解

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。将抽象部分与实现部分分离,使它们都可以独立地变化。将对象组合成树形结构以表示"部分-整体"的层次结构,使得用户对单个对象和组合对象的使用具有一致性。动态地给一个对象添加一些额外的职责,就增加功能来说,装饰器模式比生成子类更为灵活。为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。运用共享技术有效地支持大量细粒度的对象。

zhaoshuzhaoshu的专栏 429

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

装饰器模式与代理模式的区别_程序员面试必备:设计模式——装饰器模式

前言《设计模式自习室》系列,顾名思义,本系列文章带你温习常见的设计模式。主要内容有:该模式的介绍,包括: 引子、意图(大白话解释) 类图、时序图(理论规范)该模式的代码示例:熟悉该模式的代码长什么样子该模式的优缺点:模式不是万金油,不可以滥用模式该模式的实际使用案例:了解它在哪些重要的源码中被使用该系列会逐步更新于我的博客和公众号(博客见文章底部),也希望各位观众老爷能够关注我的个人公众号:后端技...

weixin_42298809的博客 267

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

Python 代理模式:控制对象访问的智能中介

Python 中的代理模式是一种强大的结构型设计模式,它通过代理对象为真实对象提供了一种间接的访问方式,并能够在这个过程中添加各种额外的逻辑。通过理解抽象主题、真实主题和代理这些关键要点,我们可以根据不同的应用场景实现代理模式,包括远程代理、虚拟代理和保护代理等。在与装饰器模式和适配器模式的比较中,我们可以更清晰地看到代理模式的特点和优势,从而在不同的编程场景中准确地选择合适的设计模式,提高软件的可维护性和可扩展性。

liuhailong0511的博客 1564

11、Python代理模式深度解析

代理模式是结构型设计模式中应用最广泛的模式之一,它的核心思想是通过引入代理对象来控制对真实对象的访问,从而在不修改真实对象代码的前提下,添加权限控制、日志记录、缓存、延迟加载、远程调用等横切关注点。代理模式解决的痛点:耦合严重、对象创建开销大、缺乏访问控制、远程调用复杂。三个核心角色:抽象主题、真实主题、代理。五种常见类型:远程代理、虚拟代理、保护代理、缓存代理、智能引用代理。两种实现方式:静态代理(手动编写)和动态代理(运行时生成)。企业应用。

【javatoai17819112191】→Java && python && AI Agent工程师 733

Python 代理模式

摘要:代理模式是一种结构型设计模式,通过提供替身对象控制对真实对象的访问。Python实现主要有四种类型:虚拟代理(懒加载)、远程代理(网络访问)、保护代理(权限控制)和智能代理(日志/缓存)。典型应用包括延迟加载大资源、权限验证和缓存优化。与装饰器模式不同,代理侧重访问控制而非功能扩展。Python中可通过类组合或@property描述符简化实现,适用于数据库连接池、ORM懒加载等场景。

likuoelie的博客 1020

Python与设计模式--装饰器模式

又提到了那个快餐点餐系统,不过今天我们只以其中的一个类作为主角:饮料类。除了基本配置,快餐店卖可乐时,可以选择加冰,如果加冰的话,要在原价上加0.3元;卖牛奶时,可以选择加糖,如果加糖的话,要原价上加0.5元。怎么解决这样的问题?可以选择装饰器模式来解决这一类的问题。构建好装饰器后,在具体的业务场景中,就可以与饮料类进行关联。

linjun的博客 1015

Python 中的适配器模式:连接不兼容接口的桥梁

Python 中的适配器模式是一种强大的结构型设计模式,它能够有效地解决接口不兼容的问题。通过明确目标接口、被适配者和适配器这几个关键要点,我们可以采用类适配器或者对象适配器的方式来实现接口的转换。在实际应用中,适配器模式在整合现有系统、集成第三方库以及处理版本更新导致的接口变化等场景中发挥着重要的作用。同时,与装饰器模式和代理模式的比较也有助于我们更深入地理解适配器模式的特点和用途,从而在不同的编程场景中准确地选择合适的设计模式,提高软件的可维护性和可扩展性。

liuhailong0511的博客 1229

设计模式:Python实现结构型模式

一、常见结构型设计模式 装饰器模式(Decorator): 无需子类化拓展对象功能 代理模式(Proxy): 把一个对象的操作代理到另一个对象 适配器模式(Adapter): 通过一个间接层适配统一接口 外观模式(Facade): 简化复杂对象的访问问题 享元模式(Flyweight): 通过对象复用(池)改善资源利用,比如连接池 MVC Model-View-Controller: 解耦展示逻辑和业务逻辑 二、代理模式 把一个对象的操作代理另一个对象 通过json 模块的 dumps

李俊的博客 1222

Python 设计模式(结构型)

Python 设计模式(结构型)

心若有所向往,何惧道阻且长。 1189

23种设计模式Python版 11 代理模式

基本介绍 在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。 和适配器模式的区别:适配器模式主要改变所考虑对象的接口,而代理模式不能改变所代理类的接口。 和装饰器模式的区别:装饰器模式为了增强功能,而代理模式是为了加以控制。 特点:为其他对象提供一种代理以控制对这个对象的访问 代理模式属于结构型模式。 案例图示 买火车票不一定要去火车站买,也可以在网上买,省去了排队的环节: 优缺点 优点: 职责清晰 高扩展性 智能化 缺点: 由于在客户端和真实主题之间增加了代理对

weixin_43422005的博客 142

07、Python适配器模式

场景类别具体描述典型案例第三方SDK集成第三方库的接口与系统标准不一致,又不能修改第三方代码支付网关、短信服务、OSS存储、地图服务遗留系统兼容旧系统接口无法修改,新系统需要对接旧系统老旧数据库驱动、历史SOAP服务转REST多版本API维护同一服务需要同时支持多个版本的API协议开放平台v1/v2/v3并存、接口灰度升级多实现统一抽象多个功能相似但接口不同的实现,需要统一调用方式多种数据库、多种消息队列、多种缓存接口适配层(防腐层)

【javatoai17819112191】→Java && python && AI Agent工程师 722

设计模式- 装饰器模式(Decorator Pattern)结构|原理|优缺点|场景|示例

装饰器模式(Decorator Pattern)是一种结构型设计模式,它允许在运行时动态地给对象添加新的职责(功能)或改变其原有行为。装饰器模式通过创建一个装饰器类,该类包装(持有)原始对象,并在保持原始对象接口不变的前提下,通过代理或继承的方式添加新的功能。装饰器模式可以提供比继承更灵活的扩展方式,因为它可以在不修改原有类的情况下,为对象添加新功能,并且可以叠加多个装饰器以实现多重增强

piaomiao_的博客 2822
上一篇: 5分钟上手Python爬虫:从干饭开始,轻松掌握技巧
下一篇: 几行代码教你用代码操作word
Python干货分享
博客等级 码龄3年 607粉丝 37原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值