装饰器
介绍
装饰器就是使用一个闭包函数,在闭包函数内调用目标函数。
可以达到不改动目标函数的同时,增加额外的功能
例子:使用闭包函数语法糖实现装饰器
def outer(func):
def inner():
print("我睡觉了")
func()
print("我起床了")
return inner
@outer
def sleep():
import random
import time
print("睡眠中....")
time.sleep(random.randint(1, 5))
# 相当于 outer(sleep) ()
sleep()
输出结果:
我睡觉了
睡眠中…
我起床了
单例模式
介绍
python单例模式的实现方法是类定义写在单独的模块内,并且该模块内创建一个对象,别的代码文件使用该类的对象时只导入该模块单例对象。
实现方法
类定义文件 str_tool.py
:
class StrTools:
pass
# 对外其他类只 import 这个对象,就实现单例
str_tool = StrTools()
使用类的代码:
from str_tool import str_tool
s1 = str_tool
s2 = str_tool
# 下面两个结果相同
print(id(s1))
print(id(s2))
工厂模式
介绍
将对象的创建由使用原生类本身创建;
转换到由特定的工厂方法来创建
优点
大量创建对象时有统一入口,便于维护;
当发生修改时,仅修改工厂类的创建方法即可
示例代码
class Person:
pass
class Worker(Person):
pass
class Student(Person):
pass
class Teacher(Person):
pass
class PersonFactory:
def getPerson(self, p_type):
if p_type == 'w':
return Worker()
elif p_type == 's':
return Student()
else:
return Teacher()
pf = PersonFactory() # 创建一个工厂对象
worker = pf.get_person('w')
stu = pf.getPerson('s')
teacher = pf.getPerson('t')