using System.Collections.Generic;
public class NormalObjectPool : NormalSingleton<NormalObjectPool>
{
private Dictionary<string, Queue<RecyleClass>> ClassPool = new Dictionary<string, Queue<RecyleClass>>();
public T Dequeue<T>() where T : RecyleClass, new()
{
var queue = GetQueue<T>();
if (queue.Count <= 0)
{
queue.Enqueue(new T());
}
return (T)queue.Dequeue();
}
public void Enqueue<T>(T t) where T : RecyleClass, new()
{
var queue = GetQueue<T>();
queue.Enqueue(t);
}
public void DestoryQueue<T>() where T : RecyleClass, new()
{
if (ClassPool.ContainsKey(typeof(T).Name))
{
ClassPool.Remove(typeof(T).Name);
}
}
private Queue<RecyleClass> GetQueue<T>() where T : RecyleClass, new()
{
if (!ClassPool.ContainsKey(typeof(T).Name))
{
ClassPool[typeof(T).Name] = new Queue<RecyleClass>();
}
return ClassPool[typeof(T).Name];
}
}
public interface RecyleClass
{
}