Sono forse ancora un po 'ecocompatibile sul pooling di oggetti, e voglio assicurarmi che qualcosa del genere sia un modello di sound design prima di iniziare realmente. Prendi il seguente codice (che usa il framework Starling in ActionScript 3):
[Embed(source = "/../assets/images/game/misc/red_door.png")]
private const RED_DOOR:Class;
private const RED_DOOR_TEXTURE:Texture = Texture.fromBitmap(new RED_DOOR());
private const m_vRedDoorPool:Vector.<Image> = new Vector.<Image>(50, true);
.
.
.
public function produceRedDoor():Image
{
// get a Red Door image
}
public function retireRedDoor(pImage:Image):void
{
// retire a Red Door Image
}
Tranne che ci sono quattro colori: rosso, verde, blu e giallo. Quindi ora abbiamo una piscina separata per ogni colore, una funzione di produzione separata per ogni colore e una funzione separata di ritiro per ogni colore. Inoltre ci sono diversi elementi nel gioco che seguono questo modello a 4 colori, quindi per ognuno di essi abbiamo quattro pool, quattro funzioni di produzione e quattro funzioni di ritiro.
Ci sono più colori coinvolti nelle immagini che non solo il loro predominante, quindi provare a lanciare tutte le porte, ad esempio, in un unico pool, e quindi modificare le loro proprietà dei colori in giro non funzionerà. Anche la non esistenza della parola chiave static è dovuta alla sua lentezza in AS3.
È questo il modo giusto di fare le cose?
Modifica
Un singolo pezzo del puzzle è se dovrei provare a gettare tutti questi pool nella stessa classe, con funzioni completamente nuove e tutto per ogni pool. Questo è in qualche modo correlato a un'altra domanda che ho chiesto di recente. Anche se la risposta accettata di quella domanda non ha necessariamente affrontato questo particolare scenario, ottenere più classi, variabili, astrazioni, ecc. e quando si sta tentando di fare qualcosa come il pooling di oggetti, non sono sicuro che se la realizzazione di un progetto di classe come quello introdurrà un sovraccarico "troppo". Questa è solo una parte individuale di quello che sto chiedendo, poiché la domanda è in definitiva molto più generale.