ฉันกำลังศึกษา opengl es และตัวอย่างที่ฉันเห็นคือใช้คลาส "พูล" เพื่อติดตามกิจกรรมการสัมผัสและคีย์บอร์ด
มีคนช่วยอธิบายได้ว่าทำไมและทำไมจึงต้องมีคลาสพูล จากสิ่งที่ฉันอ่านมันมีส่วนเกี่ยวข้องกับการรวบรวมขยะและ จำกัด จำนวนคลาสอินพุตที่สร้างขึ้น
ทั้งหมดนี้ดูเหมือนเป็นนามธรรมเล็กน้อยสำหรับฉันดังนั้นหากใครบางคนสามารถโปรดอธิบายสิ่งที่เกิดขึ้นฉันจะขอบคุณมันฉันจะวางรหัสที่นี่:
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);
ขอบคุณ!