单例设计模式

什么是单例设计模式?

单例:单个对象/实例
程序在运行过程中,确保一个类只能创建一个对象,之后不管在程序的哪个地方获取该类的对象,获取到的都是同一个对象
使用场景:商品仓库等,import导入模块就是一个单例设计模式,每个模块只能被导入一次

使用类属性实现单例设计模式

# 类属性实现单例设计模式
class A(object):
    # 定义类属性
    __instance = None

    # 重写构造函数__new__
    def __new__(cls, *args, **kwargs):
        # 第一次创建对象
        if cls.__instance is None:
            cls.__instance = super().__new__(cls)
        # 之后每次返回第一次创建的对象
        return cls.__instance


a1 = A()
a2 = A()
print(a1 is a2)

True

使用装饰器实现单例设计模式

# 定义装饰器
def singleton(cls):
    # 定义局部变量表示对象,默认为None
    instance = None

    def inner(*args, **kwargs):
        nonlocal instance
        # 判断对象是否存在,不存在则创建对象
        if instance is None:
            instance = cls(*args, **kwargs)
        # 存在就返回该对象
        return instance

    return inner

True

全部评论

相关推荐

05-22 12:44
已编辑
门头沟学院 golang
点赞 评论 收藏
分享
就在我现在公司的隔壁每天经过都唏嘘不已(就是羡慕)什么时候可以到这里上班啊
柯基在debug:从大学毕业投简历到现在了,应届的时候我都面到终面了,现在工作四年了连简历初筛都过不了了
投递莉莉丝游戏等公司8个岗位 >
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务