当前位置: 首页 > news >正文

python-patterns:Python 设计模式集合,42k+ Star

文章目录

  • python-patterns:Python 设计模式集合,42k+ Star

python-patterns:Python 设计模式集合,42k+ Star

GitHub 上有一个仓库,把常见的设计模式用 Python 重新实现了一遍,收获了 42k+ 的 Star。

这个仓库叫 python-patterns,由开发者 faif 维护,收录了创建型、结构型、行为型等多种设计模式的 Python 实现。

每个模式都是独立的 Python 文件,可以直接运行和学习。

创建型模式

创建型模式关注的是对象的创建方式。仓库中收录了以下几种:

  • abstract_factory:用通用函数配合具体工厂来创建对象
  • borg:一种共享状态的单例模式,所有实例共享同一个字典
  • builder:通过构建对象逐步接收参数,最终返回构造好的对象
  • factory:将实例创建委托给专门的函数或方法
  • lazy_evaluation:Python 中的惰性求值属性模式
  • pool:预先实例化并维护一组相同类型的对象
  • prototype:使用工厂和原型克隆来创建新实例,适合实例化成本较高的场景

结构型模式

结构型模式定义了类和对象如何组合成更大的结构:

  • adapter:通过白名单将一个接口适配到另一个接口
  • bridge:在客户端和提供者之间充当中间人,降低接口变更的影响
  • composite:让客户端可以统一处理单个对象和组合对象
  • decorator:用其他功能包装功能,从而影响输出
  • facade:用一个类作为一组其他类的 API
  • flyweight:透明地复用具有相似或相同状态的现有实例
  • proxy:一个对象将操作转发给另一个对象
  • mvc:模型、视图、控制器的非严格关系模式

行为型模式

行为型模式关注对象之间的通信和职责分配:

  • chain_of_responsibility:用一连串处理器依次尝试处理数据
  • command:将命令和参数打包,稍后调用
  • iterator:遍历容器并访问其元素
  • mediator:一个对象知道如何连接其他对象并充当代理
  • memento:生成不透明令牌,用于回退到之前的状态
  • observer:为事件或数据变化提供回调通知
  • publish_subscribe:源将事件或数据分发给零个或多个注册的监听者
  • state:将逻辑组织为离散的潜在状态,以及可转换的下一状态
  • strategy:对同一数据的可选操作
  • template:对象强加一个结构,但接受可插拔的组件
  • visitor:对集合中的所有项调用回调

反模式

仓库还列出了一些在 Python 中不推荐使用的设计模式:

Singleton:Python 模块本身就是单例,每个模块只会被导入一次。显式的单例类增加了不必要的复杂度,更好的做法是使用模块级变量或依赖注入。

God Object:把太多逻辑集中在一个类里,会让代码难以测试和维护。应该把功能拆分成更小、更内聚的类。

继承过度使用:深层继承树会让代码变得脆弱。Python 社区更倾向于组合优于继承。

依赖注入和委托模式

仓库还包含了依赖注入的三种变体实现,以及委托模式的实现。委托模式中,一个对象通过委托给第二个对象来处理请求。

其他模式

除了经典的 GoF 模式,仓库还收录了一些非标准模式:

  • blackboard:一种架构模型,通过整合不同子系统的知识来构建解决方案
  • graph_search:图搜索算法的实现
  • hsm:层次状态机的实现

安装使用

克隆仓库后可以直接查看每个模式的源码:

git clone https://github.com/faif/python-patterns

每个模式文件都包含模块级的 docstring,部分文件还提供了 Python 生态中的实际应用示例。

仓库还附带了视频资源,包括 Peter Ullrich 的 Python 设计模式演讲,以及 Sebastian Buczynski 关于为什么在 Python 中不需要设计模式的讨论。

对于想要深入理解设计模式在 Python 中如何落地的开发者来说,这个仓库是一个不错的参考。每个模式都有独立的实现文件,可以单独阅读和运行,不需要依赖整个项目。

的讨论。

对于想要深入理解设计模式在 Python 中如何落地的开发者来说,这个仓库是一个不错的参考。每个模式都有独立的实现文件,可以单独阅读和运行,不需要依赖整个项目。

http://www.cnnetsun.cn/news/3152311.html

相关文章:

  • 终极指南:3步解决群晖DSM 7.2.2 Video Station不兼容问题
  • 嘎嘎降AI和去AIGC哪个更适合本科论文:2026年本科毕业论文降AI工具完整横评报告
  • 内景 现代美术馆展厅
  • 深度解析Word文档差异比较解决方案:基于COM自动化的企业级架构实现
  • 如何高效管理Zotero文献库:Zotero Format Metadata终极指南
  • 5分钟掌握QRazyBox:免费开源的二维码修复与恢复终极指南
  • 开发网站几乎都做过上传图片并截图,做个无刷新Asp.Net上传并截图示例
  • SSH安全配置全攻略:从密钥认证到入侵检测的运维必修课
  • 轻量级可扩展日志框架-日志系统设计思路与前置知识
  • 2026笔记本避坑指南:低色域屏、8GB内存、赛扬CPU为何成体验地雷
  • 奔驰曲轴皮带盘脱层,A级/GLA/GLB异响的来源
  • 抖音批量下载工具完全指南:3大核心功能+4步配置方案,轻松实现无水印视频下载与智能管理
  • 老字号书法国画班,手残党也能变大师![特殊字符]✨
  • Boss-Key老板键:如何在3分钟内掌握一键隐藏窗口的终极隐私保护技巧
  • 抽奖页高频查询优化:Redis 如何缓存活动详情和中奖记录
  • AI智能体:未来已来的数字分身,你准备好了吗?
  • DsHidMini:三步让PS3手柄在Windows上完美重生的终极指南
  • Power BI中替代Excel COUNTIF的DAX计数逻辑
  • Trilium中文版终极指南:免费开源笔记软件如何彻底改变你的知识管理
  • 【设计原则和建议】 方法
  • 如何3分钟为Windows和Linux安装精美macOS光标主题:免费开源桌面美化终极指南
  • 再回到技术面,研究 T-SQL 的 UNION、EXISTS、EXCEPT、INTERSECT 运算符。
  • freerots接口代码示例
  • 《通信电子线路》全套PPT课件
  • OpenClaw 2.7.9 搭建实操,桌面自动化工具避坑完整流程
  • 怎样在5分钟内免费将图片转换为SVG矢量图形:SVGcode实用指南
  • DiffuMeta:基于代数语言与扩散Transformer的3D超材料AI设计
  • 短视频穿搭性别偏好分析程序,区分男女用户对潮流色彩,版型的不同偏好。
  • 5个简单步骤:在Windows上解锁Apple触控板的完整功能
  • 开题撰写告别反复改稿,okbiye 一站式 AI 开题报告创作功能深度解析