当前位置:首页>python>python-patterns,一个经典的 Python 库

python-patterns,一个经典的 Python 库

  • 2026-10-10 19:37:29
python-patterns,一个经典的 Python 库

大家好,我是木木。

今天给大家分享一个经典的 Python 库,python-patterns。

python-patterns

这是一份涵盖 GoF 23 种设计模式的 Python 实现合集,适合作为学习设计模式的入门参考资料。每种模式都有简洁的代码示例和说明,是理解面向对象设计思想的实用工具箱。

项目地址:https://github.com/faif/python-patterns官方文档:https://github.com/faif/python-patterns#readme

三大特点

覆盖全面

包含创建型、结构型、行为型三大类共 20+ 种经典设计模式,每种模式都有独立的 Python 实现文件,方便逐一学习和理解。

代码精炼

每个模式实现通常不超过 100 行,只保留核心逻辑,没有多余依赖,适合初学者快速把握模式本质,而不是陷入复杂业务。

Pythonic 风格

实现充分考虑了 Python 的语言特性,比如用 callable 替代接口、用模块实现单例,并专门标注了在 Python 中不推荐使用的模式及原因。

最佳实践

安装方式

python-patterns 不是传统意义上的可安装库,而是一组代码示例集合。直接克隆仓库即可:

gitclonehttps://github.com/faif/python-patterns.gitcdpython-patterns

Python 版本要求:Python 3.7+

观察者模式

这段代码演示如何实现观察者模式——当数据对象的状态发生变化时,所有注册的观察者会自动收到通知并做出响应。

importsyssys.path.insert(0,'/tmp/python-patterns')frompatterns.behavioral.observerimportData,HexViewer,DecimalViewerdata1=Data('Data 1')view1=DecimalViewer()view2=HexViewer()data1.attach(view1)data1.attach(view2)data1.data=10data1.data=255

策略模式

这段代码演示策略模式如何让算法在运行时动态切换——通过传入不同的折扣策略函数,实现灵活的价格计算。

importsyssys.path.insert(0,'/tmp/python-patterns')frompatterns.behavioral.strategyimportOrder,ten_percent_discount,on_sale_discountorder1=Order(100,discount_strategy=ten_percent_discount)print(f"九折价: {order1.apply_discount()}")order2=Order(100,discount_strategy=on_sale_discount)print(f"促销价: {order2.apply_discount()}")

环境与版本信息

  • Python 3.11.0
  • 仓库最新 commit(2024 年更新)
  • 无额外依赖,纯标准库实现

高级功能:抽象工厂模式

抽象工厂模式提供了一种创建一系列相关对象的方式,而无需指定具体类。这段代码展示了如何用不同的工厂创建不同的宠物对象。

importsyssys.path.insert(0,'/tmp/python-patterns')frompatterns.creational.abstract_factoryimportPetShop,Dog,Catcat_shop=PetShop(Cat)pet1=cat_shop.buy_pet("小花")pet1.speak()dog_shop=PetShop(Dog)pet2=dog_shop.buy_pet("旺财")pet2.speak()

适用边界与上线检查

适用:

  • 学习设计模式和面向对象设计思想
  • 作为团队 Code Review 时的模式参考
  • 快速原型验证某个模式是否适合当前场景

不适用:

  • 直接作为生产依赖引入(这是示例代码,非框架)
  • 替代成熟的设计模式框架(如依赖注入用 dependency-injector)

上线检查:

  1. 确认理解模式的适用场景和 trade-off,不要为了用模式而用模式
  2. 优先考虑 Python 原生特性(如函数式、模块级别)是否更合适
  3. 参考项目中"不推荐在 Python 中使用的模式"章节,避免过度设计

总结

python-patterns 是一份精炼的设计模式 Python 实现,覆盖 GoF 经典模式,代码简洁、Pythonic 风格突出。它不是生产框架,而是学习和参考工具——帮你快速理解模式本质,再结合实际项目灵活运用。推荐每个 Python 开发者通读一遍。

最新文章

随机文章