Androidでインスタンスプールを実装する
インスタンストプールを実装しインスタンスを再利用します。
public class Pool<T> { /**プールするオブジェクトのリスト*/ private final List<T> freeObjects; /**プールするオブジェクトのファクトリ*/ private final PoolObjectFactory<T> factory; /**プールオブジェクトのリストの最大数*/ private final int maxSize; public Pool(PoolObjectFactory<T> factory, int maxSize) { this.factory = factory; this.maxSize = maxSize; this.freeObjects = new ArrayList<>(maxSize); } /** * プールからオブジェクトを払い出す * @return */ public T newObject() { T object = null; if (freeObjects.size() == 0) { object = factory.createObject(); } else { object = freeObjects.remove(freeObjects.size() - 1); } return object; } /** * プールにオブジェクトを返却する * @param object */ public void free(T object) { if (freeObjects.size() < maxSize) { freeObjects.add(object); } } public interface PoolObjectFactory<T> { public T createObject(); } }