美文网首页
python单例模式

python单例模式

作者: 转身丶即天涯 | 来源:发表于2019-09-29 13:47 被阅读0次

    参考资料:
    https://zhuanlan.zhihu.com/p/37534850

    什么是单例模式

    就是全局作用域内只有一个实例的设计模式。
    常见使用场景,比如数据库的连接对象,配置文件中的变量等等。

    单例模式的实现

    1.使用函数装饰器
    # 1. decorator
    def singleton(cls):
        _instance = {}
    
        def wrap():
            if cls not in _instance:
                _instance[cls] = cls()
    
            return _instance[cls]
    
        return wrap
    
    
    @singleton
    class A(object):
        def __init__(self):
            pass
    
    2.使用类装饰器
    # 2. class decorator
    class Singleton(object):
        def __init__(self, cls):
            self._cls = cls
            self._instance = {}
    
        def __call__(self, *args, **kwargs):
            if self._cls not in self._instance:
                self._instance[self._cls] = self._cls()
    
            return self._instance[self._cls]
    
    
    @Singleton
    class B():
        def __init__(self):
            pass
    
    3.使用new方法
    class C(object):
        _instance = None
    
        def __new__(cls, *args, **kwargs):
            if cls._instance is None:
                cls._instance = object.__new__(cls, *args, **kwargs)
    
            return cls._instance
    
        def __init__(self):
            pass
    

    相关文章

      网友评论

          本文标题:python单例模式

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