这个项目能做什么
python-patterns 是一个用 Python 实现的设计模式与惯用法的参考集合。它并非一个库,而是一个学习资源:每个模式都位于类别文件夹下的独立小模块中,README 以简短描述对它们进行索引。
覆盖内容分为几组。创建型模式包括 abstract_factory、borg、builder、factory、lazy_evaluation、pool 和 prototype。结构型模式包括 3-tier、adapter、bridge、composite、decorator、facade、flyweight、front_controller、mvc 和 proxy。行为型模式包括 chain_of_responsibility、catalog、chaining_method、command、interpreter、iterator(含一个替代实现)、mediator、memento、observer、publish_subscribe、registry、servant、specification、state、strategy、template 和 visitor。此外还有面向可测试性的示例(dependency_injection 及其三个变体)、一个基础的 delegation_pattern,以及其他模式如 blackboard、graph_search 和层次状态机(hsm)。
README 明确将模式视为权衡取舍,鼓励读者关注为何选择某个模式,而不仅仅是其编码方式。它还记录了在 Python 中不鼓励的反模式,包括 singleton(模块本身已是单例)、god object 和过度使用继承,并提出了替代方案,如模块级变量、依赖注入、组合和委托。
每个示例模块都应包含模块级 docstring,附上参考资料,并在可能的情况下提供“Python 生态中的示例”部分,展示真实世界的用法。项目为某些模式的 Python 2 兼容版本维护了一个 legacy 标签。贡献指南涵盖 docstring、README 更新以及运行 ./lint.sh 进行格式化、lint、类型检查和测试;开发依赖固定在 Pipfile.lock 中,并通过 make lock 重新生成。问题分类通过 CodeTriage 支持,README 还链接了多个关于 Python 设计模式的会议演讲和视频。
评论
0 人表达喜爱 · 满10人后显示 Deer Point
登录后参与讨论。