【Python进阶编程】python编程高手常用的设计模式(持续更新中)

这篇具有很好参考价值的文章主要介绍了【Python进阶编程】python编程高手常用的设计模式(持续更新中)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Python编程高手通常熟练运用各种设计模式,这些设计模式有助于提高代码的可维护性、可扩展性和重用性。

以下是一些Python编程高手常用的设计模式:

1.单例模式(Singleton Pattern)

确保一个类只有一个实例,并提供全局访问点。适用于需要共享资源或控制特定资源访问的情景。

class Singleton(object):
    _instance = None

    def __new__(cls):
        if not cls._instance:
            cls._instance = super().__new__(cls)
        return cls._instance


s1 = Singleton()
s2 = Singleton()
print(id(s1))
print(id(s2)) # s1和s2的ID应该是一样的,表明这是同一个对象

【Python进阶编程】python编程高手常用的设计模式(持续更新中),python,开发语言

其他实现单例模式的方法。

1.1 使用模块级别的变量实现单例模式

# singleton_module.py

class Singleton:
    def __init__(self):
        self.value = None

    def set_value(self, value):
        self.value = value

    def get_value(self):
        return self.value

singleton_instance = Singleton()

Python模块在程序中只会被导入一次,因此模块级别的变量可以实现单例模式。

在其他文件中,可以通过导入singleton_module模块来获取单例对象:

# main.py

from singleton_module import singleton_instance

# 使用单例对象
singleton_instance.set_value(42)
print(singleton_instance.get_value())

1.2 使用类装饰器实现单例模式

可以使用装饰器来确保类只有一个实例,并通过装饰器在需要时创建实例。

# singleton_decorator.py

def singleton(cls):
    instances = {}

    def get_instance(*args, **kwargs):
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]

    return get_instance

@singleton
class Singleton:
    def __init__(self):
        self.value = None

    def set_value(self, value):
        self.value = value

    def get_value(self):
        return self.value

在这种方式下,可以直接使用@singleton装饰器标记一个类为单例,然后通过类的实例获取单例对象:

# main.py

from singleton_decorator import Singleton

# 使用单例对象
singleton_instance = Singleton()
singleton_instance.set_value(42)
print(singleton_instance.get_value())



2. 工厂模式(Factory Pattern)

  1.  定义一个接口,但由子类决定实例化哪个类。工厂方法模式将类的实例化延迟到子类。

    
    class Product(ABC):
        @abstractmethod
        def create_product(self):
            pass
    
    class ConcreteProductA(Product):
        def create_product(self):
            return "Product A"
    
    class ConcreteProductB(Product):
        def create_product(self):
            return "Product B"

    3.观察者模式(Observer Pattern)

from abc import ABC, abstractmethod

class Observer(ABC):
    @abstractmethod
    def update(self, message):
        pass

class ConcreteObserver(Observer):
    def update(self, message):
        print(f"Received message: {message}")

class Subject:
    _observers = []

    def add_observer(self, observer):
        self._observers.append(observer)

    def remove_observer(self, observer):
        self._observers.remove(observer)

    def notify_observers(self, message):
        for observer in self._observers:
            observer.update(message)

​​​​​​4. 策略模式(Strategy Pattern)

  1. 定义一系列算法,将每个算法封装起来,并使它们可以互换。策略模式可以使算法独立于客户端而变化。

    from abc import ABC, abstractmethod
    
    class Strategy(ABC):
        @abstractmethod
        def execute(self):
            pass
    
    class ConcreteStrategyA(Strategy):
        def execute(self):
            return "Strategy A"
    
    class ConcreteStrategyB(Strategy):
        def execute(self):
            return "Strategy B"
    
    class Context:
        def __init__(self, strategy):
            self._strategy = strategy
    
        def execute_strategy(self):
            return self._strategy.execute()

5.装饰器模式(Decorator Pattern)

  1.  动态地给一个对象添加一些额外的职责,装饰模式比继承更加灵活。文章来源地址https://www.toymoban.com/news/detail-820082.html

     
    from abc import ABC, abstractmethod
    
    class Component(ABC):
        @abstractmethod
        def operation(self):
            pass
    
    class ConcreteComponent(Component):
        def operation(self):
            return "Concrete Component"
    
    class Decorator(Component):
        _component = None
    
        def __init__(self, component):
            self._component = component
    
        def operation(self):
            return self._component.operation()
    
    class ConcreteDecorator(Decorator):
        def operation(self):
            return f"{super().operation()}, Decorated"

到了这里,关于【Python进阶编程】python编程高手常用的设计模式(持续更新中)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 设计模式:程序员的秘密武器(高手必备)

    在过去的几十年的职业生涯中,我观察到许多同事在技术方面取得了显著的进步和能力提升。然而,随着时间的推移,他们似乎逐渐遇到了一个发展的瓶颈。尽管大家都渴望以最快的速度提升自己的技能水平,但他们忽视了一个关键的因素,那就是内功修炼。 是的,我相信大

    2024年02月04日
    浏览(50)
  • Python 进阶指南(编程轻松进阶):十五、面向对象编程和类

    原文:http://inventwithpython.com/beyond/chapter15.html OOP 是一种编程语言特性,允许你将变量和函数组合成新的数据类型,称为 类 ,你可以从中创建对象。通过将代码组织成类,可以将一个整体程序分解成更容易理解和调试的小部分。 对于小程序来说,OOP 与其说是增加了组织,不如

    2023年04月09日
    浏览(46)
  • python进阶编程

    lambda匿名函数 python使用lambda表达式来创建匿名函数 语法 lambda函数不能访问自己的参数列表以外或者全局命名空间里面的参数 lambda的主体是一个表达式而不是代码块,仅仅能封装有限的逻辑进去 推导式 【Python】推导式(列表推导式、元组推导式、字典推导式、集合推导式)

    2024年02月14日
    浏览(36)
  • Python设计模式详解

    在软件开发中,设计模式是解决特定问题的通用方法。本博客将探讨Python中的设计模式,以及如何应用它们来解决常见问题。我们将重点关注两个Gang of Four(GOF)提出的基本原则: 基于接口编程而不是实现: Duck Typing在Python中很常见,虽然我们不显式定义接口,但通过鸭

    2024年01月18日
    浏览(31)
  • Python之设计模式

    设计模式是面向对象语言特有的内容,是我们在面临某一类问题时候固定的做法,设计模式有很多种,比较流行的是:GOF(Goup Of Four)23种设计模式。当然,我们没有必要全部学习,学习几个常用的即可。 对于初学者,我们学习两个最常用的模式:工厂模式和单例模式。 工厂

    2024年02月09日
    浏览(29)
  • 10.python设计模式【代理模式】

    内容:为其他对象提供一种代理一控制对这个对象的访问 应用场景: 远程代理: 为远程的对象提供代理 虚代理:根据需要创建很大的对象 保护代理:控制对原始对象的访问,用于对象有不同访问权限时 UML图 举个例子: 需求:完成一个文件读取和写入,完成远程代理、需

    2024年02月15日
    浏览(35)
  • 95 | Python 设计模式 —— 策略模式

    策略模式是一种行为型设计模式,它定义了一系列的算法,并将每个算法封装在独立的策略类中,使得这些算法可以相互替换,而不影响客户端的使用。策略模式可以让客户端根据不同的需求选择不同的算法,从而使得系统更加灵活和可扩展。 在本教程中,我们将学习策略模

    2024年02月13日
    浏览(26)
  • 【python设计模式】13、策略模式

    哲学思想: 策略模式是一种设计模式,它可以使得我们在程序中根据需要动态地选择算法的具体实现方式。策略模式的思想源于哲学中的“多元论”(pluralism)和“实用主义”(pragmatism)。 多元论认为,世界上存在着许多不同的观点和方法,没有一个固定的标准或者方法是

    2023年04月08日
    浏览(33)
  • Python 进阶指南(编程轻松进阶):十三、性能测量和大 O 算法分析

    原文:http://inventwithpython.com/beyond/chapter13.html 对于大多数小程序来说,性能并不那么重要。我们可能会花一个小时编写一个脚本来自动执行一个只需要几秒钟就能运行的任务。即使需要更长的时间,当我们端着一杯咖啡回到办公桌时,这个项目也可能已经完成了。 有时候花时

    2023年04月09日
    浏览(40)
  • 14.python设计模式【模板方法模式】

    内容:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法某特定步骤。 角色: 抽象类(AbstractClass):定义抽象的原子操作(钩子操作);实现一个模板方法作为算法的骨架。 具体类(ConcreteClass):

    2024年02月15日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包