單例設計模式怎麼來的?
在面向對的程式設計中,當業務併發量非常大,那麼就會出現重複建立的相同的物件,每建立乙個物件就會開闢一塊記憶體空間,而這些物件其實是一抹一樣的,那麼有沒有辦法使用得記憶體物件只建立一次,然後在隨處使用呢?單例模式就是解決這個問題的。
實現方式:
1、建立乙個類靜態字段(類變數)__instance
2、建立乙個靜態函式,通過函式的邏輯判斷 __instance 是否已存在,如不存在就將物件值賦於 __instance,即__instance = 類(),否則直接返回__instance,也即建立的物件都是一樣的
3、使用單例模式建立物件時直接通過類呼叫靜態函式建立即可
'''普通模式
'''class
a(object):
def__init__
(self,name,male):
self.name =name
self.male =male
#例項化多boy個物件
obj1 = a('
ben','
boy'
)obj2 = a('
min','
girl')
obj3 = a('
miao
','boy')
(id(obj1),id(obj2),id(obj3))
#2061619812168 2061619812448 2061619812504
'''單例模式
'''class
a(object):
__instance =none
def__init__
(self,name,male):
self.name =name
self.male =male
@staticmethod
defcreate_obj():
ifnot a.__instance
: a.
__instance = a('
ben','
boy'
)
return a.__instance
else
:
return a.__instance
#單例模式例項化多個物件
obj1 =a.create_obj()
obj2 =a.create_obj()
obj3 =a.create_obj()
#列印下記憶體位址
print(id(obj1),id(obj2),id(obj3))
#1608791595832 1608791595832 1608791595832
python單例模式繼承 python單例模式
我們可以使用 new 這個特殊方法。該方法可以建立乙個其所在類的子類的物件。更可喜的是,我們的內建 object 基類實現了 new 方法,所以我們只需讓 sing 類繼承 object 類,就可以利用 object 的 new 方法來建立 sing 物件了。classsing object def...
單例模式 python
單例模式 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。實現 某個類只有乙個例項 途徑 1 讓乙個全域性變數使得乙個物件被訪問,但是它不能防止外部例項化多個物件。2 讓類自身負責儲存它的唯一例項。這個類可以保證沒有其他例項可以被建立。即單例模式。多執行緒時的單例模式 加鎖 雙重鎖定。餓漢式...
python單例模式
new 在 init 之前被呼叫,用於生成例項物件。利用這個方法和類的屬性的特點可以實現設計模式的單例模式。單例模式是指建立唯一物件,單例模式設計的類只能例項 例項化1個物件。class singleton object instance none def init self pass def ne...