單例模式(Java,Python)實現

2021-07-25 06:56:36 字數 1568 閱讀 2285

單例模式是一種常用的軟體設計模式。在它的核心結構中只包含乙個被稱為單例的特殊類。通過單例模式可以保證系統中乙個類只有乙個例項。

public

class singleton

public

static singleton getinstance()

return instance;

}}

2>餓漢式(載入類的時候生成乙個例項)

public

class singletone

//保證只有乙個例項

public

static singletone getinstance()

}

3>雙重鎖(解決懶漢式執行緒安全)

public

class singletond

//保證只有乙個例項

public

static singletond getinstance()}}

return instance;

}}

python實現

1.普通實現

class

signleton

(object):

"""docstring for signleton"""

__instance = none

def__new__

(cls, *args, **keywords):

# if not hasattr(cls, '__instance'):

if cls.__instance is

none:

# if not cls.__instance:

cls.__instance = super(signleton, cls).__new__(cls, *args, **keywords)

print cls.__instance

return cls.__instance

if __name__ == '__main__':

a = signleton()

b = signleton()

assert id(a) == id(b)

print a == b

2.裝飾器實現

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

設計模式之單例模式 Singleton C 實現

特點 1.建構函式 私有化,因此不能直接定義乙個該類的物件 private csingle 2.定義乙個型別為 該類本身的指標 的乙個靜態成員 static csingleton m singleinstance 3.定義乙個返回型別為 該類本身的指標 的乙個靜態成員函式 static csingl...

單例模式 單例模式

餓漢式 急切例項化 public class eagersingleton 2.宣告靜態成員變數並賦初始值 類初始化的時候靜態變數就被載入,因此叫做餓漢式 public static eagersingleton eagersingleton new eagersingleton 3.對外暴露公共的...

Python設計模式 工廠模式 單例模式的實現

設計模式是物件導向語言特有的內容,設計模式有很多種,比較流行的是gof23種設計模式。通過模式實現了多種分離,大型的專案中採用模式實現 常用的設計模式 工廠模式和單例模式 該模式實現了建立者和呼叫者的分離,使用專門的工廠類將選擇實現類 建立物件進行統一的管理和控制 測試工廠模式 class ca c...