Python 設計模式介紹 單例模式

2021-09-08 19:23:42 字數 1098 閱讀 2400

1、單例是只有乙個例項

2、通過靜態欄位+靜態字段偽造出乙個單例效果

3、什麼時候用:當所有例項中封裝的資料相同時,建立單例模式(eg:連線池)

用單例模式建立連線池:

class

cp: __instance =none

def __init__(self):

self.ip = "

1.1.1.1

"self.port = 3306

self.pwd = "

123123

"self.user = "

***"

self.conn_list = [1,2,3,4,5,6

] @staticmethod

def get_instance():

ifcp.__instance:

return

cp.__instance

else

: # 建立乙個物件,並將物件賦值給靜態欄位__instance

cp.__instance =cp() #執行init方且建立物件,並賦值給私有靜態字段

return

cp.__instance #將賦值的返回給私有靜態字段

obj1 =cp.get_instance() # 靜態欄位類呼叫

print(obj1)

方法二:

class singleton(object

): def __new__(cls, *args, **kw):

if not hasattr(cls, '

_instance'):

orig =super(singleton, cls)#orig是object

cls._instance = orig.__new__(cls, *args, **kw) #使用的是object的new方法

return

cls._instance

class

myclass(singleton):

a = 1

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不允許外...