news 2026/5/1 8:50:31

Python 设计模式

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python 设计模式

Python 设计模式概述

设计模式(Design Patterns)是软件设计中常见的、可复用的问题解决方案,由 GoF(Gang of Four,四人组)在1994年的经典书籍《设计模式:可复用面向对象软件的基础》中总结出23种模式。这些模式分为三大类:创建型(Creational)、结构型(Structural)和行为型(Behavioral)。

在 Python 中,由于语言的动态特性(如鸭子类型、装饰器、内置迭代器等),有些模式实现更简单,甚至某些模式(如迭代器、装饰器)已被语言内置。但掌握这些模式有助于写出更优雅、可维护的代码,尤其在大型项目中。

三大类设计模式列表
类别模式名称(中文/英文)主要用途
创建型(5种)单例模式 (Singleton)
工厂方法 (Factory Method)
抽象工厂 (Abstract Factory)
生成器 (Builder)
原型 (Prototype)
处理对象创建方式,隐藏创建细节,提高灵活性。
结构型(7种)适配器 (Adapter)
桥接 (Bridge)
组合 (Composite)
装饰器 (Decorator)
外观 (Facade)
享元 (Flyweight)
代理 (Proxy)
处理类或对象的组合,简化结构,提高复用。
行为型(11种)责任链 (Chain of Responsibility)
命令 (Command)
解释器 (Interpreter)
迭代器 (Iterator)
中介者 (Mediator)
备忘录 (Memento)
观察者 (Observer)
状态 (State)
策略 (Strategy)
模板方法 (Template Method)
访问者 (Visitor)
处理对象间的交互和责任分配,提高解耦。
常见模式 Python 示例

下面挑选几个经典模式,提供简洁的 Python 实现示例(基于 Python 3+)。

  1. 单例模式 (Singleton)
    确保一个类只有一个实例,常用于数据库连接、日志器等。

    classSingleton:_instance=Nonedef__new__(cls,*args,**kwargs):ifcls._instanceisNone:cls._instance=super().__new__(cls)returncls._instance# 使用s1=Singleton()s2=Singleton()print(s1iss2)# True
  2. 工厂方法 (Factory Method)
    定义创建接口,让子类决定实例化哪个类。

    fromabcimportABC,abstractmethodclassProduct(ABC):@abstractmethoddefoperation(self):passclassConcreteProductA(Product):defoperation(self):return"Product A"classConcreteProductB(Product):defoperation(self):return"Product B"classCreator(ABC):@abstractmethoddeffactory_method(self):passdefsome_operation(self):product=self.factory_method()returnf"Creator:{product.operation()}"classConcreteCreatorA(Creator):deffactory_method(self):returnConcreteProductA()# 使用creator=ConcreteCreatorA()print(creator.some_operation())# Creator: Product A
  3. 观察者模式 (Observer)
    一对多依赖,当主体变化时通知观察者(常用于事件系统)。

    classSubject:def__init__(self):self._observers=[]defattach(self,observer):self._observers.append(observer)defnotify(self):forobserverinself._observers:observer.update(self)classObserver:defupdate(self,subject):print(f"Observer notified:{subject}")# 使用subject=Subject()observer=Observer()subject.attach(observer)subject.notify()# Observer notified: <__main__.Subject object at ...>
  4. 装饰器模式 (Decorator)
    动态添加职责(Python 有内置 @decorator 语法)。

    defdecorator(func):defwrapper(*args,**kwargs):print("Before call")result=func(*args,**kwargs)print("After call")returnresultreturnwrapper@decoratordefgreet(name):returnf"Hello,{name}!"print(greet("World"))# Before/After + Hello, World!
注意事项
  • Python 的动态性使一些模式(如策略模式)可以用简单函数实现,而非类。
  • 不要滥用模式:遵循 KISS(Keep It Simple, Stupid)和 YAGNI(You Aren’t Gonna Need It)原则。
  • 推荐资源:
    • Refactoring Guru(中文版):https://refactoringguru.cn/design-patterns/python (详细代码示例)。
    • GitHub 项目:faif/python-patterns(经典实现集合)。
    • 书籍:《Mastering Python Design Patterns》或 GoF 原书结合 Python 示例。

如果需要某个具体模式的详细解释、更多代码或应用场景,请告诉我!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/1 8:44:17

5分钟打造你的专属桌面互动伴侣:终极配置指南

5分钟打造你的专属桌面互动伴侣&#xff1a;终极配置指南 【免费下载链接】BongoCat 让呆萌可爱的 Bongo Cat 陪伴你的键盘敲击与鼠标操作&#xff0c;每一次输入都充满趣味与活力&#xff01; 项目地址: https://gitcode.com/gh_mirrors/bong/BongoCat 在日复一日的数字…

作者头像 李华
网站建设 2026/5/1 9:33:44

Dify在法律文书生成中的格式规范性保障

Dify在法律文书生成中的格式规范性保障 在律师事务所的日常工作中&#xff0c;一份起诉状可能因为标题层级错位、引用法条过时或缺少关键段落而被法院退回&#xff1b;一份合同因金额书写格式不统一、签名位置缺失而在商务谈判中显得不够专业。这些看似“细节”的问题&#xff…

作者头像 李华
网站建设 2026/4/30 22:46:44

openmv与stm32通信实时性分析:STM32F4性能测试报告

OpenMV与STM32通信实时性实测&#xff1a;如何榨干STM32F4的串口性能&#xff1f;你有没有遇到过这种情况——OpenMV明明“咔嚓”一下就识别出了目标&#xff0c;但你的小车却慢半拍地转向&#xff1f;或者AGV在避障时突然抖了一下&#xff0c;像是卡顿了一帧视觉&#xff1f;别…

作者头像 李华
网站建设 2026/5/1 9:29:15

Dify平台的会话上下文长度管理策略

Dify平台的会话上下文长度管理策略 在构建智能客服、AI助手或内容生成系统时&#xff0c;你是否曾遇到这样的尴尬&#xff1a;用户刚聊到第三轮&#xff0c;AI突然“失忆”&#xff0c;忘了之前说好的角色设定&#xff1b;或者更糟——请求直接报错&#xff0c;提示“上下文过长…

作者头像 李华
网站建设 2026/5/1 11:17:57

Open-AutoGLM性能提升5倍的秘密:动态图学习机制深度剖析

第一章&#xff1a;Open-AutoGLM性能提升5倍的秘密&#xff1a;动态图学习机制深度剖析Open-AutoGLM 在图神经网络&#xff08;GNN&#xff09;领域实现了高达5倍的性能提升&#xff0c;其核心突破在于引入了创新的动态图学习机制。该机制不再依赖静态图结构&#xff0c;而是根…

作者头像 李华
网站建设 2026/4/17 9:02:34

图文转Word自动化文档生成终极指南:一键生成,效率翻倍

还在为图文排版抓狂吗&#xff1f;会议记录、产品说明、培训材料...每次都要花几个小时复制粘贴、调整格式&#xff1f;今天我要为你分享一个3分钟搞定图文转Word的方法&#xff0c;让你彻底告别手动排版的烦恼&#xff01; 【免费下载链接】Awesome-Dify-Workflow 分享一些好用…

作者头像 李华