基于栈实现的一个数据工具缓冲池
背景
开发中可能经常使用到列表,数组,StringBuilder等临时存储工具的工具,此时新建一个储存数据的对象,又感觉有点多余,因此引入数据对象缓冲池,可以从中拿取列表等临时对象,用来存放数据,用完后在放入缓冲池中。
核心代码:
泛型方法,提供给外部直接获取,检查栈中是否有所需对象,没有的话创建
public T Get()
{
T element;
if (_stack.Count == 0)
{
element = new T();
countAll++;
}
else
{
element = _stack.Pop();
}
if (_actionOnGet != null)
_actionOnGet(element);
return element;
}
释放数据对象,压入栈中,等待下次的调用
public void Release(T element)
{
if (_stack.Count > 0 && ReferenceEquals(_stack.Peek(), element))
UnityEngine.Debug.LogError("已经被释放了");
if (_actionOnRelease != null)
_actionOnRelease(element);
_stack.Push(element);
}
Demo_003实现了一个列表和StringBuilder,需要者自取:
链接:https://pan.baidu.com/s/1CP4FLttldNHW-gW2zUrlDA
提取码:ncv6