Python實現單例模式

2021-10-07 09:40:33 字數 1233 閱讀 8569

目錄

單例模式

實現原理 實現

測試單例模式是最簡單的設計模式之一,它提供了建立物件的最佳方式。這種模式涉及到乙個單一的類,該類負責建立自己的物件,同時確保只有單個物件被建立。即多次建立乙個類的物件,得到的物件的儲存位址永遠與第一次建立物件的儲存位址相同。

使用裝飾器和字典來實現單例模式。

def fun(cls):

instance = {}

if cls not in instance:

instance[cls] = cls(*args, **kwargs)

return instance[cls]

@fun

class demo(object):

pass

def fun(cls):

instance = {}

if cls not in instance:

instance[cls] = cls(*args, **kwargs)

return instance[cls]

@fun

class demo(object):

pass

if __name__ == '__main__':

for i in range(10):

d = demo()

print(d)

執行結果:

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

<__main__.demo object at 0x10236d668>

生成的10個demo例項其實指向乙個位址,本質上是乙個例項。

python實現單例模式

最近在寫乙個連線池,而連線池管理類不可避免的需要使用單例來保證所有使用者在取得連線時取到的一定是同乙個管理物件。故將此模式取來研究一番。保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點 設計模式 單例模式是全域性只有乙個訪問點,故對於乙個類來說,任何例項化後訪問到的都應該是同樣的物件。而也有另...

Python 實現單例模式

encoding utf 8 print 方法1 方法1,實現 new 方法 並在將乙個類的例項繫結到類變數 instance上,如果cls.instance為none說明該類還沒有例項化過,例項化該類,並返回 如果cls.instance不為none,直接返回cls.instance class ...

python實現單例模式

單例模式,簡單來說,就是乙個類只能有乙個例項,並且能夠自行例項化向整個系統提供。例如檔案系統和任務管理器等。由此可見,單例模式的要點有三個 1.乙個類只能有乙個例項 2.它必須自行建立這個例項 3.它必須自行向整個系統提供這個例項 在python實現單例模式的方法總結起來有四種及其對應 如下 1.魔...