1.描寫敘述:
這個模式是非常有意思,並且比較簡單,可是我還是要說由於它使用的是如此的廣泛,如此的有人緣,單例就是單一、獨苗的意思,那什么是獨一份呢?
你的思維是獨一份,除此之外還有什么不能山寨的呢?
我們舉個比較難復制的對象:皇帝。
中國的歷史上非常少出現兩個皇帝並存的時期,是有,但不多,那我們就覺得皇帝是個單例模式,在這個場景中,有皇帝,有大臣,大臣是天天要上朝參見皇帝的,今天參拜的皇帝應該和昨天、前天的一樣(過渡期的不考慮,別找茬哦),大臣磕完頭,抬頭一看,嗨,還是昨天那個皇帝,單例模式,絕對的單例模式,先看類圖:

凝視:
main()。大臣
CEmperor。須要單例的類
說明:非常多大臣拜見的皇帝,僅僅有一個。
體如今面向對象方面,CEmperor定義一個靜態指針,和一個靜態函數,私有化構造函數、析構函數、構造函數復制、重載賦值語句。
注意:線程安全,採用相互排斥體的方式實現。
2. 代碼:
Emperor = {} function Emperor:new(o) o = o or {} setmetatable(o,self) self.__index = self return o end function Emperor:GetInstance() if self.m_pEmperor == nil then self.m_pEmperor = self:new() end return self.m_pEmperor end function Emperor:ReleaseInstance() if self.m_pEmperor then self.m_pEmperor = nil end end function Emperor:EmperorInfo() print("皇帝某年某日", os.date("%X", os.time())) end --- main --- function main() pEmperor1 = Emperor:GetInstance() pEmperor1:EmperorInfo() pEmperor2 = Emperor:GetInstance() pEmperor2:EmperorInfo() if pEmperor1 == pEmperor2 then print("大家都是天天要上朝參見同個皇帝!") end end main()
執行結果,例如以下:
