ObjectPool<T>
class
class ObjectPool<T> {
final List<T> _pool = new List<T>();
final Function _valueFactory;
int _poolCount = 0;
ObjectPool(T valueFactory()) : _valueFactory = valueFactory;
//---------------------------------------------------------------------------
T pop() {
if (_poolCount == 0) {
return _valueFactory();
} else {
_poolCount--;
return _pool[_poolCount];
}
}
//---------------------------------------------------------------------------
push(T value) {
if (_poolCount == _pool.length) {
_pool.add(value);
} else {
_pool[_poolCount] = value;
}
_poolCount++;
}
//---------------------------------------------------------------------------
reset() {
_pool.clear();
_poolCount = 0;
}
}
Constructors
new ObjectPool(T valueFactory()) #
Creates a new Object instance.
Object instances have no meaningful state, and are only useful
through their identity. An Object instance is equal to itself
only.
ObjectPool(T valueFactory()) : _valueFactory = valueFactory;
Methods
T pop() #
T pop() {
if (_poolCount == 0) {
return _valueFactory();
} else {
_poolCount--;
return _pool[_poolCount];
}
}
dynamic push(T value) #
push(T value) {
if (_poolCount == _pool.length) {
_pool.add(value);
} else {
_pool[_poolCount] = value;
}
_poolCount++;
}
dynamic reset() #
reset() {
_pool.clear();
_poolCount = 0;
}