Cocos2dx-lua实现单例设计模式
定义一个单例类
新建一个lua文件,命名为MyDirector.lua,代码如下:
module("MyDirector",package.seeall) -- 成员变量 local instance = nil print("load MyDirector") -- 静态方法(不需要传self) function getInstance() if instance == nil then instance = new(MyDirector) print("new MyDirector") end return instance end -- 非静态方法(需要传self) function printName( self ) print("my name is MyDirector") end
tools.lua代码如下:
-- 创建一个对象 function new( moduleName ) local obj = {} setmetatable(obj,{__index = moduleName}) return obj end
MyDirector模块中有一个方法,判断局部变量instance是否为nil,如果为nil则调用new函数返回一个元表__Index字段为MyDirector的table(相当于创建一个对象),并赋值给instance,否则直接返回instance。
获取类实例
调用代码如下:
require("src/tools") require("src/MyDirector") require("src/MyDirector") -- 获取MyDirector类的实例 MyDirector.getInstance() MyDirector.getInstance() -- 获取MyDirector类的实例并调用其printName成员方法 MyDirector.getInstance():printName()
从打印结果可以看出只创建了一个MyDirector的实例,因为"new MyDirector"只打印了一次,但调用了两次MyDirector的getInstance方法。
posted on 2014-09-05 11:57 linchaolong 阅读(1350) 评论(0) 编辑 收藏 举报