實現單例模式的幾種方法

2022-05-01 02:15:10 字數 1302 閱讀 2381

單例模式(singleton pattern)是一種常用的軟體設計模式,該模式的主要目的是確保某乙個類只有乙個例項存在。當你希望在整個系統中,某個類只能出現乙個例項時,單例物件就能派上用場。

在 python 中,我們可以用多種方法來實現單例模式

其實,python 的模組就是天然的單例模式,因為模組在第一次匯入時,會生成.pyc檔案,當第二次匯入時,就會直接載入.pyc檔案,而不會再次執行模組**。因此,我們只需把相關的函式和資料定義在乙個模組中,就可以獲得乙個單例物件了。如果我們真的想要乙個單例類,可以考慮這樣做:

mysingleton.py

class singleton(object):

def foo(self):

pass

singleton = singleton()

將上面的**儲存在檔案mysingleton.py中,要使用時,直接在其他檔案中匯入此檔案中的物件,這個物件即是單例模式的物件

from a import singleton

def singleton(cls):

_instance = {}

def _singleton(*args, **kargs):

if cls not in _instance:

_instance[cls] = cls(*args, **kargs)

return _instance[cls]

return _singleton

@singleton

class a(object):

a = 1

def __init__(self, x=0):

self.x = x

a1 = a(2)

class person:

from therading import lock

lock = lock()

_instance = none

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

with cls.lock:

if cls._instance is none:

cls._instance = object.__new__(cls)

return cls._instance

def __init__(self):

pass

實現單例模式的幾種方法

public class singleclass public static singleclass getinstance 2 懶漢式 類在被載入時不會被初始化,當第一次被使用時進行初始化,為保證單例,可以使用sychronized關鍵字確保執行緒安全,但是每次呼叫時都會同步。public cla...

單例模式的實現的幾種方法

餓漢式的特點 執行緒安全,呼叫效率高,但是不能延遲載入 實現原始碼 public class singlecase public static singlecase getdl 懶漢式的特點 執行緒安全,呼叫效率不高,但是能延遲載入 實現原始碼 public class lazy 加入同步塊,防止併...

用python實現單例模式的幾種方法

使用 new 方法,python自省 class singleton object def new cls,args,kwargs 如果沒有隱變數 instance就呼叫 new 乙個,python自省 if not hasattr cls,instance orig super singleton...