miduo_client/Assets/ManagedResources/~Lua/Common/ObjectPool.lua

47 lines
1.0 KiB
Lua

---
--- 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