新建一个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
-- 创建一个对象 function new( moduleName ) local obj = {} setmetatable(obj,{__index = moduleName}) return obj end
调用代码如下:
require("src/tools") require("src/MyDirector") require("src/MyDirector") -- 获取MyDirector类的实例 MyDirector.getInstance() MyDirector.getInstance() -- 获取MyDirector类的实例并调用其printName成员方法 MyDirector.getInstance():printName()
从打印结果可以看出只创建了一个MyDirector的实例,因为"new MyDirector"只打印了一次,但调用了两次MyDirector的getInstance方法。