37)django-单例模式

时间:2023-03-09 16:47:30
37)django-单例模式

一:单例模式

  单例模式,是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。

  通过单例模式可以保证系统中一个类只有一个实例。即一个类只有一个对象实例.

  常用例子:数据库连接串,只保存一个,或者kindediter等过滤类等。

二:单例模式实现

  方法1:

# -*- coding:utf-8 -*-
__author__ = 'shisanjun' class Foo(object):
instance=None def __init(self):
self.name="shisanjun" @classmethod
def get_intance(cls):
if Foo.instance:
return Foo.instance
else:
Foo.instance=Foo()
return Foo.instance def process(self):
return "" obj1=Foo.get_intance()
obj2=Foo.get_intance()
print(id(obj1),id(obj2))
#结果:44675872 44675872 一样

  方法2:通过__new__方法实现,__new__在__init__前先执行

# -*- coding:utf-8 -*-
__author__ = 'shisanjun' class Foo(object):
instance=None def __init(self):
self.name="shisanjun" def __new__(cls, *args, **kwargs):
if Foo.instance:
return Foo.instance
else:
Foo.instance=object.__new__(cls,*args,**kwargs)
return Foo.instance def process(self):
return "" obj1=Foo()
obj2=Foo()
print(id(obj1),id(obj2))
#结果:38187808 38187808 一样