美文网首页
python的单例模式

python的单例模式

作者: 萝卜枣 | 来源:发表于2021-10-21 11:16 被阅读0次

单例模式定义:具有该模式的类只能生成一个实例对象。
优点:具有很高的解耦性和灵活性

创建实现单例模式的装饰器

# 创建外层函数singleton,可以传入类
def singleton(cls, *args, **kwargs):
    # 创建一个instances字典用来保存单例
    instances = {}

    # 创建一个内层函数来获得单例
    def get_instance(*args, **kwargs):
        # 判断instances字典中是否含有单例,如果没有就创建单例并保存到instances字典中,然后返回该单例
        if cls not in instances:
            instances[cls] = cls(*args, **kwargs)
        return instances[cls]

    # 返回内层函数get_instance
    return get_instance()

创建一个带有装饰器的类

@singleton
class User:
    def __init__(self, name):
        self.name = name

创建user实例

user = User(name="zhangsan")

@singleton相当于User = singleton(User),在创建实例对象时会先将 User 作为参数传入到 singleton 函数中,函数在执行过程中不会执行 get_instance 函数(函数只有调用才会执行),直接返回get_instance函数名。

此时可以看作User = get_instance,user = get_instance(name="zhangsan"),调用get_instance 函数,先判断实例是否在字典中,如果在直接从字典中获取并返回,如果不在执行 instances [cls] = User(name="zhangsan"),然后返回该实例对象并赋值非user变量,即user = instances[cls]。

相关文章

  • python之理解单例模式

    python之理解单例模式 1、单例模式 单例模式(Singleton Pattern)是一种常见的软件设计模式,...

  • python中OOP的单例

    目录 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 单例

    目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计模式 是 前人...

  • 2018-06-19 Python中的单例模式的几种实现方式的及

    转载自: Python中的单例模式的几种实现方式的及优化 单例模式 单例模式(Singleton Pattern)...

  • python 单例

    仅用学习参考 目标 单例设计模式 __new__ 方法 Python 中的单例 01. 单例设计模式 设计模式设计...

  • python单例模式

    python单例模式实现方式 使用模板 python模块是天然的单例模式(.pyc文件的存在) 使用__new__...

  • 基础-单例模式

    单例模式总结-Python实现 面试里每次问设计模式,必问单例模式 来自《Python设计模式》(第2版) 1.理...

  • Python设计模式 之 Borg模式

    Borg模式 是单例模式在python中的变种。传统单例模式在python中,存在继承兄弟类之间状态隔离的问题。 ...

  • Python 面向对象7: 单例模式

    一、内容 1.1、单例设计模式 1.2、__new__方法 1.3、Python 中的单例 二、单例设计模式 2....

  • Python经典面试题21道

    1、Python如何实现单例模式? Python有两种方式可以实现单例模式,下面两个例子使用了不同的方式实现单例模...

网友评论

      本文标题:python的单例模式

      本文链接:https://www.haomeiwen.com/subject/vbcrnltx.html