创建型模式

创建型模式处理对象实例化机制,这样的模式可以定义如何创建对象实例或者甚至如何构造类的方式。

单例模式

class Singleton(object):
	_instance = None
	def __new__(cls,*args, **kwargs):
		if cls._instance is None:
			cls._instance = super().__new__(cls, *args, **kwargs)
		return cls._instance

此方法不安全,涉及到继承之后就不确定了。


class Singleton(object):

	_instances = []

	def __call__(cls, *args, **kwargs):
		if cls not in cls._instances:
			cls._instance[cls] = super().__call__(cls, *args, **kwargs)
		return cls._instances[cls]

什么是Borg和单态?
在单例模式中真正重要的不是类的存活实例的数量,而是他们在任何时候都共享相同的状态的事实。所以,可以使类的所有实例共享一个__dict__:

class Borg(object):
	_state = {}
	
	def __new__(cls, *args, **kwargs):
		ob = super().__new__(cls, *args, **kwargs)
		ob.__dict__ = cls._state
		return obj
		

注意:

单例工厂使一种处理应用程序的唯一性的隐式方法。除非你一定需要这种模式,否则请使用模块而不是类。

你可能感兴趣的:(python)