問題
class dog(object):
__instane = none
def __new__(cls, *args, **kwargs):
if cls.__instane == none:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name):
self.name = name
dog1 = dog("旺財") # 建立了dog物件,並呼叫__init__方法,初始化 旺財
print(dog1.name)
dog2 = dog("哮天犬") # 使用dog物件,並呼叫__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已經被重新初始化為哮天犬
"""建立物件一次,但是初始化了兩次,也就是__init__方法執行力兩次
dog旺財
哮天犬哮天犬
"""class dog(object):
__instane = none
def __new__(cls, *args, **kwargs):
if cls.__instane == none:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name):
self.name = name
dog1 = dog("旺財") # 建立了dog物件,並呼叫__init__方法,初始化 旺財
print(dog1.name)
dog2 = dog("哮天犬") # 使用dog物件,並呼叫__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已經被重新初始化為哮天犬
"""建立物件一次,但是初始化了兩次,也就是__init__方法執行力兩次
dog旺財
哮天犬哮天犬
"""解決
class dog(object):
__instane = none
__init__flag = false
def __new__(cls, *args, **kwargs):
if cls.__instane == none:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name): # 加個類屬性,就很容易解決啦
if self.__init__flag == false:
self.__init__flag = true
self.name = name
dog1 = dog("旺財") # 建立了dog物件,並呼叫__init__方法,初始化 旺財
print(dog1.name)
dog2 = dog("哮天犬") # 使用dog物件,並呼叫__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已經被重新初始化為哮天犬
"""旺財
旺財旺財
"""class dog(object):
__instane = none
__init__flag = false
def __new__(cls, *args, **kwargs):
if cls.__instane == none:
cls.__instane = object.__new__(cls)
return cls.__instane
else:
return cls.__instane
def __init__(self, name): # 加個類屬性,就很容易解決啦
if self.__init__flag == false:
self.__init__flag = true
self.name = name
dog1 = dog("旺財") # 建立了dog物件,並呼叫__init__方法,初始化 旺財
print(dog1.name)
dog2 = dog("哮天犬") # 使用dog物件,並呼叫__init__方法,重新初始化哮天犬
print(dog2.name)
print(dog1.name) # 已經被重新初始化為哮天犬
"""旺財
旺財旺財
"""
單例模式,解決單例破壞。
破壞單例模式的三種方法 執行緒安全情況下 單例模式有 3 個特點 單例類只有乙個例項物件 該單例物件必須由單例類自行建立 單例類對外提供乙個訪問該單例的全域性訪問點。單例模式的優點和缺點 單例模式的優點 單例模式可以保證記憶體裡只有乙個例項,減少了記憶體的開銷。可以避免對資源的多重占用。單例模式設定...
java多執行緒 單例設計模式的問題及解決
單例設計模式 餓漢式 class single public static single getinstance 懶漢式 懶漢式後載入初始化物件,如果多執行緒則出現安全問題 會new n多物件 如果使用同步,會出現效率低下。使用同步 塊的雙重判斷來解決效率問題。靜態同步方法的鎖是該位元組碼物件 類名...
單例模式及面試
指乙個類只有乙個例項 需要 1 私有的構造方法,使其不能在類的外部通過new關鍵字例項化該類物件。2 私有的靜態例項化物件,並且將其封裝為private static型別。3 對外提供乙個公共的訪問方法,並返回該例項物件。第 1 種 餓漢式 立即載入 餓漢式就是 使用類的時候已經將物件建立完畢 不管...