美文网首页
单例模式

单例模式

作者: xdm | 来源:发表于2020-08-05 09:08 被阅读0次

    单例模式是编程中常用的一种设计模式,使用单例模式可以避免大量的对象创建所带来的资源消耗,例如再写一个生成随机图形验证码的时候我们就可以使用单例模式来设计,避免每生成一个图形码就要创建一个对象的消耗。

    两种单例

    饿汉模式:在实例化之前检查并创建实例, 线程安全。
    懒汉模式:在实例化时检查对象是否创建, 线程不安全,如果使用需加锁。

    python实现

    饿汉模式
    class HungrySingleton:
        """ 单例模式 饿汉
        """
    
        _instance = None
    
        def __new__(cls, *args, **kwargs):
            if cls._instance is None:
                cls._instance = super(HungrySingleton, cls).__new__(cls, *args, **kwargs)
    
            return cls._instance
    
    
    a = HungrySingleton()
    b = HungrySingleton()
    
    print(a is b)  # True
    
    懒汉模式
    class LazySingleton:
        """ 单例模式 懒汉
        """
    
        _instance = None
    
        def __init__(self):
            if self._instance is None:
                print("Instance not created")
            else:
                print("Instance already created")
    
        @classmethod
        def generate_instance(cls):
            """ 创建实例
            """
            if cls._instance is None:
                cls._instance = LazySingleton()
    
            return cls._instance
    
    # 此处需要注意懒汉模式下创建对象的方式
    c = LazySingleton.generate_instance()
    d = LazySingleton.generate_instance()
    
    print(c is d)  # True
    

    相关文章

      网友评论

          本文标题:单例模式

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