码迷,mamicode.com
首页 > 其他好文 > 详细

设计之单例模式

时间:2020-04-06 11:57:35      阅读:53      评论:0      收藏:0      [点我收藏+]

标签:并发   int   UNC   软件   func   inner   on()   *args   fun   

1、设计模式之单例模式

"""
方式一:__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())
"""

2、单例模式的优点和缺点

"""
单例模式的优点:
	1、由于单例模式要求在全局内只有一个实例,因而可以节省比较多的内存空间;
	2、全局只有一个接入点,可以更好的进行数据同步控制,避免多重占用;

单例模式的缺点:
	1、单例模式的扩展是比较困难的;
	2、单例模式是并发协作软件模块中需要最先完成的,因而其不利于测试
"""

设计之单例模式

标签:并发   int   UNC   软件   func   inner   on()   *args   fun   

原文地址:https://www.cnblogs.com/yafeng666/p/12640883.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!