您的位置:首页 > 编程语言 > Lua

我理解的设计模式:单例模式

2016-04-29 23:41 344 查看
单例模式(singleton pattern)

什么是单例模式,四人帮的书里面这么定义:

保证一个类仅有一个实例,并提供一个访问它的全局访问点。

可以这么理解:在一个进程里,这个类只会被实例化一次,而且可以很方便的被调用。

实现:

恶汉式:

加载类的时候,在类的内部定义一个实例,外部调用则开放给一个静态函数。

Lua实例:
(不要问我为什么用Lua,最近写手游Lua用得多,but c++就用的少了,只有修改cocos引擎底层的时候才用的到。
lua中class的实现可以参照quick-cocos2d-x的framework
)

local Singleton = class("Singleton")

function Singleton:ctor()
end

function Singlenton:doSomething()
print("hey, u get me")
end

local instance = Singleton.new()

function Singleton.getInstance()
return instance
end

Singleton.getInstance():doSomething()

控制台:
hey, u get me


懒汉式:

外部调用开放给一个静态函数,并在调用的时候检测有没有实例化。

local Singleton = class("Singleton")

function Singleton:ctor()
end

function Singlenton:doSomething()
print("hey, u get me")
end

local instance

function Singleton.getInstance()
if instance == nil then
instance = Singleton.new()
end
return instance
end

Singleton.getInstance():doSomething()

控制台:
hey, u get me


比较恶汉式和懒汉式,恶汉式在多次加载类的时候会多次初始化,懒汉式同步处理会降低速度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息