我創建了一個Android遊戲,它使用一個實體對象類,然後在許多不同類型(即敵人,子彈等)中進行擴展。有沒有辦法創建一個實體類型池,然後將獲得的實體對象轉換爲我在運行時需要的任何東西(比如子彈類型)?將實體作爲參數傳遞給構造函數將會破壞池的目的是否正確?下面是一個例子:在Libgdx中使用對象池
public class EntityPool extends Pool<Entity> {
public EntityPool (int initialCapacity, int max) {
super(initialCapacity, max);
}
protected PooledEntity newObject() {
return new PooledEntity();
}
public Entity obtain (int objectType) {
Entity ent = super.obtain();
if (objectType==SOME_OBJECT_TYPE)
//Do something to make ent into that object type
return ent;
}
public class PooledEntity extends Entity {
PooledEntity() {
super(null, 0, 0);
}
public void free() {
EntityPool.this.free(this);
}
}
}
謝謝我與你的建議(不同類型的不同池)一起去。 – Fenster
太棒了!我也想過也許有一個游泳池工廠,但你仍然會陷入低調的問題。 –