--- --- Generated by EmmyLua(https://github.com/EmmyLua) --- 对象缓存池 --- DateTime: 2018/5/9 11:14 --- local ObjectPool = {}; ObjectPool.__index = ObjectPool --构造函数 --@template:对象模版 --@actionOnGet:获取对象回调 --@actionOnRelease:回收对象回调 function ObjectPool:New(template,actionOnGet,actionOnRelease) local self = {}; setmetatable(self, ObjectPool); self.actionOnGet = actionOnGet; self.actionOnRelease = actionOnRelease; self.template = template; self.stack = list:new(); return self; end --获取对象 function ObjectPool:Get() local element; if(self.stack.length ==0) then element = self.template:new(); else element = self.stack:pop(); end if(self.actionOnGet~= nil) then self.actionOnGet(element) end; return element; end --回收对象 function ObjectPool:Release(element) if(self.actionOnRelease ~= nil) then self.actionOnRelease(element); end self.stack.push(element); end return ObjectPool