Python设计模式之装饰器模式(6)

装饰器模式允许在不修改原对象的情况下添加新功能,是结构型模式的一种。Python中,装饰器常用于数据校验、事务处理、缓存、日志等,如`functools.lru_cache`实现缓存。Django框架广泛使用装饰器进行视图功能扩展,如访问控制和缓存。装饰器模式包括定义修饰器和使用修饰器来装饰函数/方法/类,为对象动态添加功能。
摘要由CSDN通过智能技术生成

装饰器模式(Decorator Pattern):在不修改原对象结构的前提下,实现扩展对象功能。

通常给一个对象添加新功能有三种方式: - 直接给对象所属的类添加方法。 - 使用『组合』 - 使用『继承』,优先使用组合而非继承。 装饰器模式提供了第四种选择,通过动态改变对象扩展对象功能。其他编程语言通常使用继承实现装饰器装饰器模式,而python内置了装饰器。装饰器有很多用途,比如数据校验,事务处理,缓存,日志等。比如用装饰器实现一个简单的缓存,python3.5自带了functools.lru_cache

1 介绍

装饰器模式(Decorator Pattern)允许向一个现有的对象添加新的功能,同时又不改变其结构。这种类型的设计模式属于结构型模式,它是作为现有的类的一个包装。

这种模式创建了一个装饰类,用来包装原有的类,并在保持类方法签名完整性的前提下,提供了额外的功能。

意图:动态地给一个对象添加一些额外的职责。就增加功能来说,装饰器模式相比生成子类更为灵活。

主要解决:一般的,我们为了扩展一个类经常使用继承方式实现,由于继承为类引入静态特征,并且随着扩展功能的增多,子类会很膨胀。

何时使用:在不想增加很多子类的情况下扩展类。

 

2 适用场景

装饰器模式主要用于给当前类/方法/函数动态增加功能,也叫做添加横切面,常用于以下目的:

  • 数据校验
  • 事务处理(这里的事务类似于数据库事务,意味着要么所有步骤都成功完成,要么事务失败)
  • 缓存
  • 日志<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值