Python-设计模式
设计模式是一些非常有用的实践总结,用来解决软件开发中一类问题的通用方法;
作用:让代码结构更优化,让代码更优雅灵活
| 单例模式 |
定义:一个类仅有一个实例 优点:统一控制、减少系统资源开销 适用场景:数据库连接池、配置管理器、日志记录器。 |
# 模块方式(最推荐、还可以用
|
| 工厂模式 |
定义: 将对象创建逻辑封装在类或函数中,根据入参来创建不同的对象 适用场景:根据扩展名创建不同的解析器、根据支付类型创建不同的支付处理器。 |
class Dog: pass
class Cat: pass
def animal_factory(name):
return {"dog": Dog, "cat": Cat}[name]()
|
|
装饰器模式 |
定义:动态给对象添加额外功能,而不修改原代码。 适用场景:权限校验、日志记录、性能计时、缓存 Python原生支持: |
import time
def timer(func):
def wrapper(*args, **kwargs):
start = time.time()
result = func(*args, **kwargs)
print(f"耗时 {time.time()-start:.2f}s")
return result
return wrapper
@timer
def heavy_task():
...
|
|
适配器模式 |
定义:让接口不兼容的类可以一起工作 场景:封装第三方API,统一调用方式;将旧版接口适配为新接口。 |
|
|
观察者模式 |
定义:一个对象(被观察者)状态变化时,自动通知所有依赖它的观察者 场景:GUI事件响应、消息队列订阅、监控报警系统。 |
Python实现:可用回调函数、事件系统或signal机制。 |
|
策略模式 |
定义:定义一系列算法,把它们封装起来,并且可以相互替换。 场景:不同排序算法、不同折扣计算方式、不同文件压缩格式。 |
# 字典映射替代传统策略类
strategies = {
"add": lambda x, y: x + y,
"sub": lambda x, y: x - y,
}
result = strategies[operator](10, 5)
|
本文来自博客园,作者:Fēngwèi,转载请注明原文链接:https://www.cnblogs.com/fengwei-blogs/p/20950356

浙公网安备 33010602011771号