新建一個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