Python-设计模式

设计模式是一些非常有用的实践总结,用来解决软件开发中一类问题的通用方法;

作用:让代码结构更优化,让代码更优雅灵活

单例模式

定义:一个类仅有一个实例

优点:统一控制、减少系统资源开销

适用场景:数据库连接池、配置管理器、日志记录器。

# 模块方式(最推荐、还可以用__new__或元类实现# config.py
class Config:
    pass
config = Config()  # 导入这个config就是单例
工厂模式

定义: 将对象创建逻辑封装在类或函数中,根据入参来创建不同的对象

适用场景:根据扩展名创建不同的解析器、根据支付类型创建不同的支付处理器。

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)
posted @ 2026-06-30 10:04  Fēngwèi  阅读(22)  评论(0)    收藏  举报