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

单例模式(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

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

你可能感兴趣的:(设计模式)