python設計模式(四):單例模式及創建型模式總結
單例,顧名思義是一個實例,即在一個項目之中,單例的類只實例化一次。它常常應用於資料庫操作、日誌函數。
在一個大型項目中使用到日誌和資料庫操作的地方很多,不能每個文件都去單獨實例化一次,此時單例模式就顯示出了他的價值。
單例的核心在類的內部方法__new__(),每次實例化都是通過執行new函數來返回實例對象。
單例就是在類裡面定義一個作用域最高的標誌性的屬性,如果實例化過一次,那這個屬性為True否則為False,那麼返回上次實例化的對象。
code實例:
class Singleton(object):
def __new__(cls, *args, **kw):
if not hasattr(cls, _instance):
org = super(Singleton, cls)
cls._instance = org.__new__(cls, *args, **kw)
return cls._instance
# 複寫內部方法__new__()
通過hasattr函數判斷該類實例化時有沒有_instance屬性
如果不存在,那麼繼承並返回原始的__new__方法給_instance屬性
如果存在則直接返回_instance屬性所指的對象