Python常用設計模式 單例模式

2021-10-01 20:03:32 字數 1151 閱讀 9993

單例模式(singleton pattern)是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。

當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。

注意:在python中匯入模組就是一種單例模式。

class

sun:

# 定義類屬性

__instance =

none

def__new__

(cls,

*args,

**kwargs)

:# 如果__instance還沒有值,就給__instance變數賦值

ifnot cls.__instance:

cls.__instance =

object

.__new__(cls)

return cls.__instance

else

:return cls.__instance

sun = sun(

)sun1 = sun(

)sun2 = sun(

)print

(sun is sun1)

print(id

(sun)

)print(id

(sun1)

)print(id

(sun2)

)

單例模式的優點和應用

單例模式的優點:

1、由於單例模式要求在全域性內只有乙個例項,因而可以節省比較多的記憶體空間;

2、全域性只有乙個接入點,可以更好地進行資料同步控制,避免多重占用;

3、單例可長駐記憶體,減少系統開銷。

單例模式的應用舉例:

1、生成全域性惟一的序列號;

2、訪問全域性復用的惟一資源,如磁碟、匯流排等;

3、單個物件占用的資源過多,如資料庫等;

4、系統全域性統一管理,如windows下的task manager;

5、**計數器。

單例模式的缺點

1、單例模式的擴充套件是比較困難的;

2、賦於了單例以太多的職責,某種程度上違反單一職責原則(引起乙個類變化的因素不要多於乙個);

3、單例模式是併發協作軟體模組中需要最先完成的,因而其不利於測試;

4、單例模式在某種情況下會導致「資源瓶頸」。

Headfirst java設計模式 單例模式

單例 件 模式 確保乙個類只有乙個例項,並提供乙個全域性訪問點。實現 1.懶漢式 通過延遲例項化實現的單例模式 使用synchronized處理多執行緒訪問,但是效能較差。public class lazyinstantiazesingleton public static synchronized...

繼承單例模式 php PHP設計模式之單例模式

單例模式,就是保持乙個物件只存在乙個例項。並且為該唯一例項提供乙個全域性的訪問點 一般是乙個靜態的getinstance方法 單例模式應用場景非常廣泛,例如 資料庫操作物件 日誌寫入物件 全域性配置解析物件 這些場景的共同特徵是從業務邏輯上來看執行期間改物件卻是只有乙個例項 不斷new多個例項會增加...

java設計模式 Singleton單例模式

餓漢模式 package singleton created by anshay on 2017年10月14日 email anshaym 163.com 型別 餓漢模式 public class singleton 2.建立類的唯一例項,使用private static修飾 private不允許外...