标签:并发 int UNC 软件 func inner on() *args fun
"""
方式一:__new__
class Singleton:
__instance = None
def __new__(cls, *args, **kwags):
if not cls.__instance:
cls.__instance = objecet.__new__(cls)
return cls.__instance
obj1 = Singleton()
obj2 = Singleton()
方式二:classmethod
class Singleton:
__instance = None
@classmethod
def singleton(cls):
if not cls.__instance:
cls.__instance = cls()
return cls.__instance
obj1 = Singleton.singleton()
obj2 = Singleton.singleton()
方式三:装饰器
def singleton(cls);
——instance = {}
def inner(*args, **kwargs):
if cls not in __instance:
obj = cls(*args, **kwargs)
__instance[cls] = obj
return __instance[cls]
return inner
@singleton
class Func:
pass
print(Func())
print(Func())
"""
"""
单例模式的优点:
1、由于单例模式要求在全局内只有一个实例,因而可以节省比较多的内存空间;
2、全局只有一个接入点,可以更好的进行数据同步控制,避免多重占用;
单例模式的缺点:
1、单例模式的扩展是比较困难的;
2、单例模式是并发协作软件模块中需要最先完成的,因而其不利于测试
"""
标签:并发 int UNC 软件 func inner on() *args fun
原文地址:https://www.cnblogs.com/yafeng666/p/12640883.html