首页 > 其他分享 >设计模式-结构型模式之装饰器

设计模式-结构型模式之装饰器

时间:2022-09-23 10:11:36浏览次数:55  
标签:__ pre execute param kwargs print 设计模式 装饰 结构型

实现AOP(面向切面编程)的一种便捷方式,额外扩展统一管理

装饰器的实现我在语言进阶篇中有提到,这里不再赘述

 1 from decorator import decorator
 2 
 3 
 4 @decorator
 5 def pre_execute(func, param=None, *args, **kwargs):
 6     if param == "g":
 7         print(">>生活如夏日流水般缓缓前进,我们不要焦急")
 8         return func(*args, **kwargs)
 9     elif param == "c":
10         print(">>只有永不遏止的奋斗,才能使青春之花即便是凋谢,也是壮丽地凋谢")
11         return func(*args, **kwargs)
12 
13 
14 @pre_execute(param="g")
15 def execute():
16     print(">>作者:三毛")
17 
18 
19 @pre_execute(param="c")
20 def execute_():
21     print(">>作者:路遥")
22 
23 
24 if __name__ == '__main__':
25     execute()
26     execute_()

 

标签:__,pre,execute,param,kwargs,print,设计模式,装饰,结构型
From: https://www.cnblogs.com/shixiaogu/p/16721721.html

相关文章

  • 设计模式-结构型模式之外观
    简化应用程序内部接口,提供一个单一接口以供外部(前端or客户侧)调用1classValley:23defrun(self):4self.pre_declare()5self.declar......
  • 设计模式之(12)——外观模式
    外观模式(facadePattern)又叫门面模式,隐藏了子系统的复杂实现,为子系统中的一组接口提供了一个统一的访问入口,使得子系统容易被访问或使用,说白了就是把复杂的子系统封装成......
  • 1.设计模式-单例
    单例模式单例模式的核心是保证一个类只有一个实例,并且提供一个访问实例的全局访问点。单例的使用场景Spring中bean对象的模式实现方式servlet中每个servlet的实例s......
  • python进阶——装饰器
    万物皆对象介绍装饰器之前,我们需要理解一个概念:在介绍装饰器前,我们需要理解一个概念:在Python开发中,一切皆对象。什么意思呢?就是我们在开发中,无论是定义的变量(数字、字......
  • 装饰器详解
    一、闭包了解装饰器前,首先要了解,什么是闭包。闭包就是在一个函数中再定义一个函数,内部函数需要引用外部函数的参数,且外部函数的返回值是内部函数。defoutside(x):......
  • 设计模式-创建型模式之工厂
    一、简单工厂创建对象的工作交由统一的函数接口来管理,传入不同的参数,返回不同的类对象1classAqSb:23def__repr__(self):4return"按期申......
  • JAVA中容器设计的进化史:从白盒到黑盒,再到跻身为设计模式之一的迭代器
    大家好,又见面了。在我们的项目编码中,不可避免的会用到一些容器类,我们可以直接使用List、Map、Set、Array等类型。当然,为了体现业务层面的含义,我们也会根据实际需要自行封......
  • 设计模式---原型模式
    简述类型:创建型目标:通过拷贝快速创建相同或相似对象。接下来我们看一个需要改进的案例。优化案例话不多说,先来看一个创建相同或相似对象的传统写法。原版v0public......
  • 装饰者模式、深拷贝、泛型序列化解决Caffeine中的缓存一致性问题
    一、前言Caffeine是一个高性能的Java缓存库,底层数据存储采用ConcurrentHashMap优点:因为Caffeine面向JDK8,在jdk8中ConcurrentHashMap增加了红黑树,在hash冲突严重时也......
  • 设计模式-创建型模式之单例
    1、元类实现1classSingleton(type):2def__init__(self,*args,**kwargs):3super().__init__(*args,**kwargs)4self._instance=Non......