Skip to content

Instantly share code, notes, and snippets.

@rotorz
Created July 13, 2013 04:23
Show Gist options
  • Save rotorz/5989403 to your computer and use it in GitHub Desktop.
Save rotorz/5989403 to your computer and use it in GitHub Desktop.
Generic object pool for use with Google Dart
import 'dart:collection';
import 'poolable.dart';
class TestObject extends Poolable {
static TestObject creator() {
return new TestObject();
}
}
class Pool<T extends Poolable> {
Function _creator;
Queue<T> _pool = new Queue<T>();
Pool(T creator()) {
_creator = creator;
}
T fetch() {
T obj = _pool.isNotEmpty
? _pool.removeLast()
: _creator();
obj.reset();
return obj;
}
void discard(T obj) {
obj.cleanup();
_pool.addLast(obj);
}
}
//...
Pool<TestObject> pool = new Pool<TestObject>(TestObject.creator);
TestObject obj = pool.fetch();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment