美文网首页python开发
单例模式的使用

单例模式的使用

作者: 梦里才是真 | 来源:发表于2018-10-30 22:10 被阅读0次

单例模式

1. 单例是什么

我们日常使用的电脑都有一个回收站,在整个操作系统中,回收站只能有一个实例,整个系统都使用这个唯一的实例,而且回收站自行提供自己的实例。因此回收站是单例模式的应用。

确保某一个类只会创建出一个实例,这个类称为单例类,单例模式是一种对象创建型模式。

2. 创建单例-保证只有1个对象

# 实例化一个单例
class Singleton:
    __instance = None  # 保存创建首次创建的对象

    def __new__(cls):
        # 如果类属性__instance的值为None,
        # 那么就创建一个对象,并且赋值为这个对象的引用,保证下次调用这个方法时能够知道之前已经创建过对象了,这样就保证了只有1个对象
        if cls.__instance is None:
            print("创建对象")
            cls.__instance = super().__new__(cls)

        return cls.__instance


s1 = Singleton()
print(s1)  # <__main__.Singleton object at 0x00000000009C5780>
s2 = Singleton()
print(s2)  # <__main__.Singleton object at 0x00000000009C5780>

输出结果:

创建对象
<__main__.Singleton object at 0x00000000009C5780>
<__main__.Singleton object at 0x00000000009C5780>

3. 创建单例时,只执行1次init方法

class Singleton:
    __instance = None  # 保存创建首次创建的对象
    __has_init = False  # 记录是否已经初始化

    def __new__(cls):

        if cls.__instance is None:
            print("创建对象")
            cls.__instance = super().__new__(cls)

        return cls.__instance

    def __init__(self):
        if not self.__has_init:
            print("对象初始化")
            self.type = "猫"
            self.__has_init = True

s1 = Singleton()
s1.type = "动漫人物"
print(s1.type)
s2 = Singleton()
print(s2.type)

输出结果:

创建对象
对象初始化
动漫人物
动漫人物

个人博客:
https://blog.csdn.net/niubiqigai/article/details/82829024

相关文章

  • 【设计模式】单例模式

    单例模式 常用单例模式: 懒汉单例模式: 静态内部类单例模式: Android Application 中使用单例模式:

  • 单例模式之枚举类enum

    通过枚举实现单例模式 枚举类实现单例模式的优点 对于饿汉式单例模式和懒汉式单例模式了解的同学,使用以上两种单例模式...

  • 设计模式之一:单例模式

    摘要:设计模式之一:单例模式目录介绍1.单例模式介绍2.单例模式定义3.单例模式使用场景4.单例模式的实现方式 4...

  • 单例模式

    饿汉模式: 懒汉模式: Double CheckLock(DCL)实现单例 静态内部类实现单例 枚举单例 使用容器...

  • iOS开发中ARC环境下单例模式

    单例模式 1.1 概念相关 (1)单例模式 **(2)使用场合 ** 1.2 ARC实现单例 **(1)步骤 **...

  • C++单例模式的实现分析

    单例模式 什么是单例模式?我就不多做赘述了。移步至百度百科单例模式。 什么时候使用单例? 单例模式是一个经典的设计...

  • 面试题总结

    1.单例设计模式的实现,为什么使用单例模式?? static MusicManager ...

  • 使用Kotlin高效地开发Android App(五)完结篇

    一. 单例 使用 Java 来编写单例模式的话,可以写出好几种。同样,使用 Kotlin 也可以写出多种单例模式。...

  • 单例模式

    本文章采用循序渐进的方式对单例模式进行演化实现。 什么是单例模式,为什么要使用单例模式? 单例模式就是只允许创建一...

  • iOS 单例模式 or NSUserDefaults

    本文内容:iOS的单例模式NSUserDefaults的使用总结:iOS单例模式 and NSUserDefaul...

网友评论

    本文标题:单例模式的使用

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