编程必备,解析5种常用的Python设计模式

【Python】Python设计模式 Python语言本身的设计,就已经蕴含了许多设计模式的思想。在我们学习具体模式之前,认识到这些语言层面的“内建模式”至关重要,因为它们往往是解决特定问题的首选方案。装饰器 (Decorators): 这是对经典装饰器模式 (Decorator Pattern) 和 代理模式 (Proxy Pattern) 的直接语法级支持。它允许我们以一种声明式、非侵入的方式,为函数或类附加额外的职责,如日志记录、性能测试、事务处理、权限校验等。上下文管理器 (Context Managers): 语句和、方法,是资源管理 阅读详情

一、简介

Python是一种非常流行的编程语言,它易于学习、灵活且功能强大,在各个领域广泛应用。然而,很多人误认为Python是一种面向过程的语言,无法很好地支持面向对象的编程风格。这种观念是错误的,Python不仅支持面向对象编程,而且很好地应用了设计模式。

图片

二、什么是设计模式?

设计模式是一套被广泛接受且行之有效的编程经验。它提供了一组通用的解决方案,可以应用于各种编程场景。设计模式的出现是为了解决软件开发中的一些常见问题,如代码重用、系统可扩展性、代码可读性等。

三、为什么使用设计模式?

使用设计模式的好处如下:

  • **代码复用:**通过使用设计模式,可以将代码分解和组合以实现代码复用。
  • **系统可扩展性:**设计模式可以使系统更加灵活,易于扩展,并且能够适应不同的需求。
  • **代码可读性:**使用设计模式可以提高代码的可读性,使代码更加清晰。

四、Python中的设计模式

Python中的设计模式与其他语言中的设计模式类似,但也有一些区别。Python中的设计模式可以分为三类:创建型模式、结构型模式和行为型模式。

本文将介绍其中一些常见的模式。

4.1 工厂模式

工厂模式是一种创建型模式,它提供了创建对象的最佳方式。工厂模式将对象的创建和使用分离,使对象的创建更加灵活。

在Python中,可以使用工厂模式创建各种对象,例如:

class Dog:
    def __init__(self):
        self.name = "dog"


class Cat:
    def __init__(self):
        self.name = "cat"


class AnimalFactory:
    def create_animal(self, animal_type):
        if animal_type == "dog":
            return Dog()
        elif animal_type == "cat":
            return Cat()
        else:
            return None


factory = AnimalFactory()
animal = factory.create_animal("dog")
print(animal.name) 

# 输出:dog

4.2 单例模式

单例模式是一种创建型模式,可确保一个类只有一个实例,并提供一个全局访问点。

图片

在Python中,可以使用装饰器来实现单例模式,例如:

class Singleton:
    __instance = None

    def __new__(cls):
        if cls.__instance is None:
            cls.__instance = super().__new__(cls)
        return cls.__instance


a = Singleton()
b = Singleton()


print(a is b)

# 输出:True

4.3 适配器模式

适配器模式是一种结构型模式,它允许将一个类的接口转换成客户端所期望的另一个接口。

在Python中,可以使用适配器模式来实现不兼容接口之间的兼容性,例如:

class Target:
    def request(self):
        pass


class Adaptee:
    def specific_request(self):
        pass


class Adapter(Target):
    def __init__(self, adaptee):
        self.adaptee = adaptee

    def request(self):
        self.adaptee.specific_request()


adaptee = Adaptee()
adapter = Adapter(adaptee)
adapter.request()

4.4 装饰器模式

装饰器模式是一种结构型模式,可动态地为对象附加新的行为。

在Python中,装饰器是一种特殊的函数,可以用于修改函数或类的行为,例如:

def logging(func):
    def wrapper(*args, **kwargs):
        print("call function:", func.__name__)
        return func(*args, **kwargs)
    return wrapper


@logging
def foo():
    print("hello world")


foo()

# 输出:调用函数:foo hello world

4.5 观察者模式

观察者模式是一种行为型模式,它定义了对象之间的一对多关系,当一个对象的状态发生变化时,所有依赖于它的对象都将得到通知并自动更新。

图片

在Python中,可以使用观察者模式来实现事件驱动编程,例如:

class Subject:
    def __init__(self):
        self.observers = []

    def attach(self, observer):
        self.observers.append(observer)

    def detach(self, observer):
        self.observers.remove(observer)

    def notify(self):
        for observer in self.observers:
            observer.update(self)


class Observer:
    def update(self, subject):
        pass


class ConcreteSubject(Subject):
    def __init__(self):
        super().__init__()
        self.state = 0

    def get_state(self):
        return self.state

    def set_state(self, state):
        self.state = state
        self.notify()


class ConcreteObserver(Observer):
    def update(self, subject):
        print("state changed to:", subject.get_state())


subject = ConcreteSubject()
observer = ConcreteObserver()
subject.attach(observer)
subject.set_state(1)

# 输出:状态变更为:1

五、总结

图片

Python支持面向对象的编程风格。通过使用设计模式,开发者可以更好地利用Python的面向对象特性,使代码更加灵活、可读性更强,更易于维护。

Python中的设计模式包括工厂模式、单例模式、适配器模式、装饰器模式、观察者模式等。这些模式可以应用于各种编程场景,帮助解决常见的软件开发问题。

关于Python学习指南

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后给大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

包括:Python激活码+安装包、Python web开发,Python爬虫,Python数据分析,人工智能、自动化办公等学习教程。带你从零基础系统性的学好Python!

👉Python所有方向的学习路线👈

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。(全套教程文末领取)

在这里插入图片描述

👉Python学习视频600合集👈

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

在这里插入图片描述

温馨提示:篇幅有限,已打包文件夹,获取方式在:文末

👉Python70个实战练手案例&源码👈

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

👉Python大厂面试资料👈

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述

在这里插入图片描述

👉Python副业兼职路线&方法👈

学好 Python 不论是就业还是做副业赚钱都不错,但要学会兼职接单还是要有一个学习规划。

在这里插入图片描述

👉 这份完整版的Python全套学习资料已经上传,朋友们如果需要可以扫描下方优快云官方认证二维码或者点击链接免费领取【保证100%免费】

Python中的23种设计模式:详细分类与总结 设计模式是解决特定问题的通用方法,分为创建型模式、结构型模式和行为型模式三大类。本文是对每种模式的详细介绍,包括其核心思想、应用场景和优缺点。 阅读详情

相关推荐

Python 全栈工程师必备面试题 300 道(2020 版)

Python 全栈工程师核心面试 300 问深入解析(2020 版) Python 面试不仅需要掌握 Python 基础知识和高级语法,还会涉及网络编程、web 前端后端、数据库、网络爬虫、数据解析、数据分析和数据可视化等各方面的核心知识。针对网上资料参差不齐,并且自己上网寻找费时费力,效果还不好的问题,进行该 Chat 创作。 本人结合自己多年的开发经验,同时汲取网络中的精华,本着打造全网最全面...

Python美丽星球--微信(Felixzfb) 1万+

Python的23种设计模式(完整版带源码实例)

设计模式是面对各种问题进行提炼和抽象而形成的解决方案。这些设计方案是前人不断试验,考虑了封装性、复用性、效率、可修改、可移植等各种因素的高度总结。它不限于一种特定的语言,它是一种解决问题的思想和方法最后的最后由本人水平所限,难免有错误以及不足之处, 屏幕前的靓仔靓女们 如有发现,恳请指出!你轻轻地点了个赞,那将在我的心里世界增添一颗明亮而耀眼的星!

编辑编辑器 2万+

Python 面试题面试必备

1、在 Python 中是如何管理内存的? (1) Python 有一个私有堆空间来保存所有的对象和数据结构。作为开发者,我们无法访问它,是解释器在管理它。Python 内存管理器控制内存分配。 (2) 内置垃圾回收器会回收使用所有的未使用内存,以使其适用于堆空间。 2、当退出 Python 时,是否释放全部内存? 答: 否。循环引用其它对象或引用自全局命名空间的对象的模块,在 Python...

qq_43367746的博客 2777

python的设计模式

文章目录设计模式0、接口1、单例模式方法一:使用模块方法二、装饰器实现方法三、基于__new__方法2、工厂模式3、建造者模式 设计模式 设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。 0、接口 定义:一种特殊的类,声明了若干方法,要求继承该接口的类必须实现这种方法,作用:限制继承接口的类的方法的名称及调用方式,隐藏了类的内部实现 1、单例模式 ​ 单例模式(Singleton Pattern)是一种常用的软

weixin_43673156的博客 8841

Python自学编程开发路线图

Python核心编程免费视频资源《Python入门教程》:http://yun.itheima.com/course/145.htmlPython 基础学习大纲所处阶段主讲内容技术要点学习目标第一阶段:python核心编程计算机组成原理和开发环境认识操作系统;认识python;开发环境pycharm可掌握的核心能力:1、掌握基本的Linux系统操作;2、掌握Python基础编程语法;3、建立起编程...

qq_37101453的博客 3778

Python 设计模式详解

简单来说就是把一些具有相同方法的类再进行封装,抽象共同的方法以供调用,是工厂方法的进阶版本。实例 -> 类 -> 类工厂 -> 抽象工厂。

悦分享 587

写文章 点击打开何可ke的主页 编程必备,解析5种常用的Python设计模式

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。Python支持面向对象的编程风格。观察者模式是一种行为型模式,它定义了对象之间的一对多关系,当一个对象的状态发生变化时,所有依赖于它的对象都将得到通知并自动更新。

m0_59236602的博客 958

支持找回微信删除好友!一款人人可用的全能微信数据分析工具

找回删除好友、查看删除记录、恢复聊天信息....

1726

Python设计模式大揭秘:5种必备模式解析

设计模式是软件工程中的重要概念,它们提供了可复用的解决方案,有助于提高代码的可维护性、可扩展性和可读性。在本文中,深入研究了五种常用的Python设计模式,分别是单例模式、工厂模式、观察者模式、策略模式和装饰器模式,并为每种模式提供了详细的示例代码。通过这些示例,可以更好地理解每种设计模式的工作原理和应用场景。单例模式用于确保只有一个实例存在,工厂模式用于创建不同类型的对象,观察者模式用于实现对象之间的通知机制,策略模式用于动态切换算法,装饰器模式用于动态添加功能。

涛哥聊Python 1039

QT实现HTTP文件(夹)下载的完整流程与实战技巧

本文详细介绍了使用QT框架实现HTTP文件和文件夹下载的完整流程与实战技巧。通过QNetworkAccessManager等核心类,讲解了从单文件下载、大文件处理、进度显示、暂停/取消功能,到复杂的文件夹下载策略。文章重点剖析了断点续传、错误处理与网络健壮性等关键问题,为C++桌面应用集成稳定高效的下载功能提供了专业指导。

weixin_29239279的博客 279

攻克JESD204B多ADC同步:从时钟对齐到数据对齐的实战解析

本文深入解析了JESD204B多ADC同步的系统性挑战与实战解决方案。从确保设备时钟同源、精确捕获SYSREF信号,到管理接收端弹性缓冲区与释放点,文章提供了从时钟对齐到数据对齐的完整调试路径与排查清单,是攻克高速数据采集系统中多片ADC同步难题的实用指南。

weixin_29231725的博客 197

最全的Python程序员面试必备常用问题解析与答案

为了帮助大家应对面试时可能遇到的各种Python技术问题,小编搜罗了各种资料,将这些面试问题大致分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作(practice) 0 WHAT 1. 什么是Python? Python是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理...

1199

[LaTeX] 调整参考文献的格式(References),包括作者名缩写,行距,字体,引用顺序等等

在此记录我对LaTeX中参考文献references的尝试,主要涵盖如题几个方面。

the Blog of 等不到天亮丶等时光 4万+

Python 中最简最好的设计模式

Python 中最简最好的设计模式

qq_43683014的博客 165

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境

恶意代码分析实战——使用Apatedns和Inetsim模拟网络环境 注:本次实验主要是《恶意代码分析实战》一书中进入动态恶意代码分析篇章的开始,主要通过Apatedns以及Inetsim来模拟为恶意代码提供其需要的网络环境,本次实验以Lab01-03.exe为例。 一、实验环境及工具。 Vmware虚拟机:win10(win7)、kali 主要工具:Apatedns、Inetsim 二、工具的安装下载 1、Apatedns:需安装至windows虚拟机客户端(win10,win7均可) 下载地址:http

妙蛙种子吃了都会妙妙秒的妙脆角的博客 7935

2024年11月架构设计师案例分析真题回顾,附参考答案、解析及所涉知识点(二)

软考高级系统架构设计师考试包含三个科目:信息系统综合知识、案例分析和系统架构设计论文。考试形式为机考。本文主要回顾2024年下半年(2024-11-10)系统架构设计师考试上午第二科案例分析的题目,同时附带参考解答、解析和所涉知识点。

一几文的编程学习笔记。 1661

python程序中注释语句也可以被执行_Python/Java程序员面试必备常用问题解析与答案...

转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类:是什么(what)如何做(how)说区别/谈优势(difference)实践操作(practice)1. 什么是Python?Python是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理。可以加入与其他语言的对比。下面是回答这一问题的几个关键点:a. Python是一种解释型语...

weixin_39966376的博客 2554

AutoSAR系列讲解(入门篇)1.2-AutoSAR概述

这里主要说明了AutoSAR是个什么,还有其工具链

雪云飞星的博客 5万+

Python/Java程序员面试必备常用问题解析与答案

转自AI算法联盟,理解python技术问题,以及一些常见的java面试中经常遇到的问题,这些面试问题分为四类: 是什么(what) 如何做(how) 说区别/谈优势(difference) 实践操作(practice) 1. 什么是Python? Python是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理。可以加入与其他语...

weixin_30663391的博客 196

淋巴结病理数字玻片读取与处理代码

Whole-slide images are generally stored in a multi-resolution pyramid structure. 首先安装openslide模块 pip install openslide-python import os.path as osp import openslide from pathlib import Path...

猫头军师兵书 1276

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Python程序员面试必备常用问题答案及解析

1. 什么是Python? Python是一种编程语言,它有对象、模块、线程、异常处理和自动内存管理。可以加入与其他语言的对比。下面是回答这一问题的几个关键点: a. Python是一种解释型语言,python代码在运行之前不需要编译。 b. Python是动态类型语言,在声明变量时,不需要说明变量的类型。 c. Python适合面向对象的编程,因为它支持通过组合与继承的方

飞飞好奇的专栏 2069

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

CCF-GESP Python一级考试全解析:网络协议+编程技能双突破

本文深度解读CCF-GESP Python编程一级考试核心内容,针对零基础学员梳理备考攻略。文章从考试大纲出发,系统拆解Python基础语法、计算机网络协议(TCP/IP/HTTP)及互联网核心概念的考核要点。结合实战案例演示如何用Python实现网络数据交互,提供精选学习资源与避坑指南。无论您是准备参赛的学生还是编程教育者,都能从中获得高效学习路径,助力通过认证考试的同时构建完整的计算机基础知识体系。

Suro 1352

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

领悟 Python 中最简最好的设计模式

大势所趋,Python 已然成风 C 语言诞生于 1972 年,却随着 Unix 的诞生才深深植根于各大操作系统; C++ 诞生于 1983 年,却因微软的可视化桌面操作系统才得以广泛传播; Java 诞生于 1995 年,却因互联网的迅速崛起才变得家喻户晓; Python 诞生于 1991 年,而下一场技术革命已然开始,AI 时代已然成风。在 AI 领域中已经被广泛使用的 Py...

python学习者的博客 1287

Python面试必备:50道核心题目解析与实战技巧

Python作为主流编程语言,其面试题往往聚焦语言特性与工程实践的结合点。从基础语法到高级特性,理解对象引用、闭包延迟绑定等核心原理是掌握Python的关键。在并发编程领域,GIL机制和多线程安全等概念直接影响系统设计决策。通过装饰器、生成器等特性,开发者能实现更优雅的代码结构。实际工程中,异常处理、设计模式应用等技能直接影响代码健壮性。本套题目覆盖算法实现、性能优化等高频考点,特别适合检验Python开发者的真实水平。

weixin_29245767的博客 299
上一篇: Python循环技巧全攻略,基础到高级应用一文get!
下一篇: 学了 Python 能用来做什么?
普通网友
博客等级 码龄3年 4493粉丝 309原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值