您現在的位置是:首頁 > 運動
python高階篇:使用元類方式實現單例模式詳解
單例模式類圖怎麼畫
對於程式設計開發的朋友來說,設計模式應該最為熟悉不過了,如果要談到哪種設計模式最為簡單,也最容易理解,首當其衝的“單例模式”應該不為過了。本文主要講解在python3中如何使用元類實現單例模式。
一、概念
單例模式:顧名思義,就是單個例項。
目的
:確保一個類只有一個例項存在,也就是說在整個系統中,如果你希望某個類只能出現一個例項,那麼單例模式就派上用場了。
要點
:1、類只能有一個例項。2、必須是這個類自己去建立例項物件。3、這個類必須自己向整個系統提供例項。
二、元類的概念
元類:建立類的那個類。在python3中,我們自己定義的類,比如說Person,Dog類,它們預設的元類是type。換句話說,Person類,Dog類也是物件,它們是type類的例項物件。因為:一切皆是物件。
總結:元類的例項是類。
三、元類實現單例模式
如何去實現首先看程式碼,再來解釋。如下圖所示:
元類實現單例模式
解釋:
1、定義了Foo類,而這個Foo類是由Singleton這個元類建立的,那麼就是說Foo類是Singleton的例項物件;
2、既然Foo是例項物件,那麼如果這麼寫“Foo()”,就表示類似於函式的呼叫方式一樣,說明例項物件也可以按照函式的方式去呼叫;
3、去執行“Foo()”這個程式碼時候,就自動的呼叫call方法,而call方法的邏輯已經重寫了邏輯,實現了一個類身上只能有“_instance”這一個屬性,從而實現了單例。
四、總結
1、本例採用的是python3元類的寫法,python2的元類與python3的語法稍微有所區別。
2、個人認為,單例模式作為軟體設計模式中最重要的一個模式之一,需要好好的掌握。當然,在python3中,單例模式的實現不僅僅是元類,還有其他方式,比如說使用裝飾器,重寫__new__方法等方式。
推薦文章
- 得分驟降,第一階段高光僅曇花一現?首鋼廚子第二階段原形畢露
最近一場首鋼以14分擊敗四川的比賽中,張才仁首發出戰14分鐘,3投僅1中,只得到了2分,在對戰這樣一支不太具備競爭力的球隊,張才仁都沒能夠在進攻端展現出自己的侵略性,看起來“廚子”在本賽季結束後,想要留在首鋼的可能性,確實在逐漸變大...
- 5天7漲停 “高階玩家”精準操作背後有何玄機?
中國中金財富無錫清揚路證券營業部近1年上榜次數(資金淨流入型):174次該席位上榜後資料回測評述:風格:該席位偏好上市3年以上的老股票,市值上尤其偏好小盤股,大都在10~20億之間...
- 全面放開後,有銀行存款的老年人,要做好3件事,早知道早受益!
第二,很多人有錢的時候,都會一股腦的存在銀行裡,但是在這裡小編也要提醒您,再有錢也不要將錢全部存在同一家銀行裡,因為這樣有可能會有損失財產的風險...