美文网首页
实现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