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

来源:互联网 发布:linux如何查看内核日志 编辑:程序博客网 时间:2024/06/06 03:37

单例模式(singleton pattern)

什么是单例模式,四人帮的书里面这么定义:
保证一个类仅有一个实例,并提供一个访问它的全局访问点。

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

实现:

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

Lua实例:        (不要问我为什么用Lua,最近写手游Lua用得多,but c++就用的少了,只有修改cocos引擎底层的时候才用的到。         lua中class的实现可以参照quick-cocos2d-x的framework          )local Singleton = class("Singleton")function Singleton:ctor()endfunction Singlenton:doSomething()    print("hey, u get me")endlocal instance = Singleton.new()function Singleton.getInstance()    return instanceendSingleton.getInstance():doSomething()控制台:hey, u get me

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

local Singleton = class("Singleton")function Singleton:ctor()endfunction Singlenton:doSomething()    print("hey, u get me")endlocal instancefunction Singleton.getInstance()    if instance == nil then         instance = Singleton.new()    end    return instanceendSingleton.getInstance():doSomething()控制台:hey, u get me

比较恶汉式和懒汉式,恶汉式在多次加载类的时候会多次初始化,懒汉式同步处理会降低速度。

1 0
原创粉丝点击