Saya telah mempelajari berbagai pilihan dan contoh yang saya lihat menggunakan kelas "Pool" untuk melacak acara sentuh dan keyboard.
Bisakah seseorang tolong jelaskan bagaimana dan mengapa kelas biliar dibutuhkan. Dari apa yang saya baca itu ada hubungannya dengan pengumpulan sampah dan membatasi jumlah kelas input yang dibuat.
Ini semua tampak agak abstrak bagi saya, jadi jika seseorang dapat menjelaskan apa yang sedang terjadi, saya akan menghargainya, saya akan menempelkan beberapa kode di sini:
public Pool(PoolObjectFactory < T > factory, int maxSize) {
this.factory = factory;
this.maxSize = maxSize;
this.freeObjects = new ArrayList < T > (maxSize);
}
public T newObject() {
T object = null ;
if (freeObjects.isEmpty())
object = factory.createObject();
else
object = freeObjects.remove(freeObjects.size() - 1);
return object;
}
public void free(T object) {
if (freeObjects.size() < maxSize)
freeObjects.add(object);
}
PoolObjectFactory <TouchEvent> factory = new PoolObjectFactory <TouchEvent> () {
@Override
public TouchEvent createObject() {
return new TouchEvent();
}
Pool <TouchEvent> touchEventPool = new Pool <TouchEvent> (factory, 50);
TouchEvent touchEvent = touchEventPool.newObject();
. . . do something here . . .
touchEventPool.free(touchEvent);
Terima kasih!
sumber