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