La lingua principale a cui sono interessato a fare il pooling di oggetti è AS3, che è noto per averne bisogno in molti casi. In passato ho sempre realizzato una nuova classe di fabbrica per ogni tipo che avrei provato a raggruppare, i parametri della sua funzione di "produzione di oggetti" erano gli stessi del costruttore di quel tipo. In sostanza:
static public function produce(<list of paramaters>):<type>
{
if (m_arryPool.length)
{
var obj:<type> = m_arryPool.pop();
// do something with the arguments passed to produce()
return obj;
}
return new obj(<arguments passed to produce()>);
}
Ma recentemente ho cercato di pensare a un modo per evitare di riscrivere questo tipo di codice della piastra della caldaia per ogni singolo tipo che voglio raggruppare, ma probabilmente senza rinunciare all'idea di passare argomenti agli oggetti restituiti come nell'esempio sopra, e sicuramente senza mettere tanta funzionalità dinamica e roba lì dentro che finisce per rallentare troppo le cose.
Sono ancora un po 'verde per il pool di oggetti. So che una factory di pooling unica per tutti non funzionerà probabilmente in tutti i casi (il Function.apply()
di AS3, ad esempio, non supporta i costruttori), ma quando arriva al punto che stai passando in così tanti argomenti alla funzione produce()
, usando così tante variabili non tipizzate, passando attraverso così tanti dizionari e liste, ecc., che non ne vale la pena più?
So che questa domanda potrebbe essere leggermente soggettiva, ma credo che ci siano in gran parte risposte obiettive ad essa. Sono principalmente interessato a come questo si applicherebbe all'AS3, ma sono anche interessato a (e chiedere) una risposta generale. È il modo migliore per gestirlo in generale solo per andare avanti e scrivere il codice boilerplate per ogni tipo che si intende condividere o qualcosa del genere? Grazie!