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

本文介绍了Python的面向对象特性及其支持的设计模式,如工厂模式、单例模式、适配器模式、装饰器模式和观察者模式。通过这些模式,提升代码复用、系统扩展性和可读性,展示了如何在Python中实现这些设计模式的实际应用。
摘要由CSDN通过智能技术生成

一、简介

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全套学习资料已经上传,朋友们如果需要可以扫描下方CSDN官方认证二维码或者点击链接免费领取保证100%免费

  • 15
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值