设计之单例模式

Posted yafeng666

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计之单例模式相关的知识,希望对你有一定的参考价值。

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、单例模式是并发协作软件模块中需要最先完成的,因而其不利于测试
"""

以上是关于设计之单例模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之单例设计模式

设计模式之单例模式

设计模式之单例模式

设计模式之单例模式

设计模式之单例模式

设计模式之单例模式以及简单代码实现