美文网首页
实现Singleton模式——剑指offer

实现Singleton模式——剑指offer

作者: 二十岁的弹簧 | 来源:发表于2018-11-29 22:03 被阅读0次

    书中实现Singleton模式的时候,不但考虑实现本身,还考虑单线程多线程环境下的效率问题,其中有对多线程编程的理解;
    有时间看一下C++
    慢慢来
    python实现Singleton模式的几种方法

    # 装饰器
    from functools import wrap
    
    def singleton(cls):
        _instance = {}
        @wrap(cls)
        def decorate(*args, **kwargs):
            if cls not in _instance:
                _instance[cls] = cls(*args, **kwargs)
            return _instance[cls]
        return decorate
    
    @singleton
    class MyClass:
        pass
    
    # 继承
    class Singleton(object):
        _instance = None
        def __new__(cls, *args, **kwargs):
            if not cls._instance:
                cls._instance = object.__new__(cls, *args, **kwargs)
            return cls._instance
        
    class MyClass(Singleton):
        pass
    
    # 元类
    class Singleton(type):
        _instance = {}
        def __call__(cls, *args, **kwargs):
            if cls not cls._instance:
                cls._instance[cls] = super(Singleton, cls).__call__(*args, **kwargs)
            return cls._instance[cls]
        
    class MyClass(metaclass=Singleton):
        pass        
    

    相关文章

      网友评论

          本文标题:实现Singleton模式——剑指offer

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