这个模式是很有意思,而且比较简单,但是我还是要说因为它使用的是如此的广泛,如此的有人缘,单例就是单一、独苗的意思,那什么是独一份呢?你的思维是独一份,除此之外还有什么不能山寨的呢?我们举个比较难复制的对象:皇帝。
中国的历史上很少出现两个皇帝并存的时期,是有,但不多,那我们就认为皇帝是个单例模式,在这个场景中,有皇帝,有大臣,大臣是天天要上朝参见皇帝的,今天参拜的皇帝应该和昨天、前天的一样(过渡期的不考虑,别找茬哦),大臣磕完头,抬头一看,嗨,还是昨天那个皇帝,单例模式,绝对的单例模式,先看类图:
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()
版权声明:本文为博主原创文章,未经博主允许不得转载。
设计模式实例(Lua)笔记之三(Singleton单例模式)
原文地址:http://blog.csdn.net/rexuefengye/article/details/47803963