pytho 单例模式

单例模式存在的目的是保证当前内存中仅存在单个实例,避免内存浪费!!!

(程序如果并发量大的话,内存里就会存在非常多功能上一模一样的对象。存在这些对象肯定会消耗内存,对于这些功能相同的对象可以在内存中仅创建一个,需要时都去调用)

# 单例模式
 
class Foo:
 
    __n = None
 
    def __init__(self):
        self.name = "nick"
        self.age = 18
        self.job = "pythoner"
 
    @staticmethod
    def dl():
        if Foo.__n:
            return Foo.__n
        else:
            Foo.__n = Foo()
            return Foo.__n
 
 
# 创建对象时不能再直接使用:obj = Foo(),而应该调用特殊的方法:obj = Foo.dl() 。
 
f1 = Foo.dl()
print(f1)
f2 =Foo.dl()
print(f2)
f3 =Foo.dl()
print(f3)
 
# 运行结果
<__main__.Foo object at 0x0000000001142390>
<__main__.Foo object at 0x0000000001142390>
<__main__.Foo object at 0x0000000001142390>
def singleton(argv):
    dic = {}
 
    def s(*args, **kwargs):
 
        if argv not in dic:
            dic[argv] = argv(*args, **kwargs)
            return dic[argv]
        else:
            return dic[argv]
 
    return s
 
 
# 类上加单例装饰器
@singleton
class Foo:
    pass
 
@singleton
class Foo2:
    pass

 

posted @ 2018-06-19 10:50  小L小  阅读(149)  评论(0编辑  收藏  举报