新建一个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
调用代码以下:ui
require("src/tools") require("src/MyDirector") require("src/MyDirector") -- 获取MyDirector类的实例 MyDirector.getInstance() MyDirector.getInstance() -- 获取MyDirector类的实例并调用其printName成员方法 MyDirector.getInstance():printName()
从打印结果能够看出只建立了一个MyDirector的实例,由于"new MyDirector"只打印了一次,但调用了两次MyDirector的getInstance方法。lua