您現在的位置是:首頁 > 運動

python高階篇:使用元類方式實現單例模式詳解

由 HelloWorld小碼農 發表于 運動2022-02-23
簡介如下圖所示:元類實現單例模式解釋:1、定義了Foo類,而這個Foo類是由Singleton這個元類建立的,那麼就是說Foo類是Singleton的例項物件

單例模式類圖怎麼畫

對於程式設計開發的朋友來說,設計模式應該最為熟悉不過了,如果要談到哪種設計模式最為簡單,也最容易理解,首當其衝的“單例模式”應該不為過了。本文主要講解在python3中如何使用元類實現單例模式。

python高階篇:使用元類方式實現單例模式詳解

一、概念

單例模式:顧名思義,就是單個例項。

目的

:確保一個類只有一個例項存在,也就是說在整個系統中,如果你希望某個類只能出現一個例項,那麼單例模式就派上用場了。

要點

:1、類只能有一個例項。2、必須是這個類自己去建立例項物件。3、這個類必須自己向整個系統提供例項。

二、元類的概念

元類:建立類的那個類。在python3中,我們自己定義的類,比如說Person,Dog類,它們預設的元類是type。換句話說,Person類,Dog類也是物件,它們是type類的例項物件。因為:一切皆是物件。

總結:元類的例項是類。

三、元類實現單例模式

如何去實現首先看程式碼,再來解釋。如下圖所示:

python高階篇:使用元類方式實現單例模式詳解

元類實現單例模式

解釋:

1、定義了Foo類,而這個Foo類是由Singleton這個元類建立的,那麼就是說Foo類是Singleton的例項物件;

2、既然Foo是例項物件,那麼如果這麼寫“Foo()”,就表示類似於函式的呼叫方式一樣,說明例項物件也可以按照函式的方式去呼叫;

3、去執行“Foo()”這個程式碼時候,就自動的呼叫call方法,而call方法的邏輯已經重寫了邏輯,實現了一個類身上只能有“_instance”這一個屬性,從而實現了單例。

四、總結

1、本例採用的是python3元類的寫法,python2的元類與python3的語法稍微有所區別。

2、個人認為,單例模式作為軟體設計模式中最重要的一個模式之一,需要好好的掌握。當然,在python3中,單例模式的實現不僅僅是元類,還有其他方式,比如說使用裝飾器,重寫__new__方法等方式。

推薦文章