Quali sono alcuni casi d'uso per il modello di progettazione del pool di oggetti? [chiuso]

5

La mia comprensione di questo è che i pool di oggetti sono utili quando vogliamo lavorare con un oggetto, ma vogliamo usarne uno che sia già stato istanziato. È come un libro di biblioteca: controlli un libro e lo restituisci quando hai finito di leggerlo.

Tuttavia, faccio fatica a vedere come questo modello di design è usato nella vita reale. Come programmatore, non ho mai visto una situazione in cui avrei dovuto controllare un oggetto anziché crearne uno nuovo, passarlo come argomento o definire una variabile singleton contenente l'oggetto.

    
posta moonman239 03.06.2018 - 02:27
fonte

3 risposte

11

È utile se l'oggetto è riutilizzabile e molto più costoso da creare o distruggere rispetto al riutilizzo.

Connessioni di database sono un caso classico. I pool di connessione sono comuni.

  • L'implementazione ODBC di Microsoft offre pool di connessioni.

  • Gli strumenti JDBC più diffusi offrono il pool di connessioni. La maggior parte dei contenitori servlet ce l'ha.

  • .Net Framework offre il pool di connessioni.

Pool di thread , un altro caso popolare.

  • Tutto ciò che utilizza Java Executor. Le implementazioni di Executor sono in genere pool di thread o almeno utilizzano un pool di thread.
  • Molti contenitori servlet, server Web e server delle applicazioni utilizzano pool di thread.
  • Ad esempio, Tomcat, Glassfish, Jetty, Apache, Nginx utilizzano tutti i pool di thread (per documentazione o revisione del codice sorgente).
  • Alcuni database mantengono pool di thread di lavoro per ragioni simili. Ad esempio MySQL, MS SQLServer.

Potresti non trovare mai un caso in cui sia necessario raggruppare i propri oggetti, ma è probabile che utilizzerai strumenti per il pool di oggetti.

    
risposta data 03.06.2018 - 02:40
fonte
3

Uso un pool di oggetti per l'acquisizione di immagini da una videocamera in C #. Ciò impedisce che l'heap di oggetti di grandi dimensioni si guasta e potrebbe diventare frammentato. Riutilizzando un pool di array di byte di grandi dimensioni, ho ottenuto un'ottimizzazione delle prestazioni ed evito potenziali problemi di risorse.

    
risposta data 03.06.2018 - 17:56
fonte
0

Nello sviluppo del gioco, si presenta abbastanza spesso. Anche oggetti abbastanza semplici che sono visibili (come proiettili, scatole, ecc.) Hanno spesso una quantità non trascurabile di istanziazione, e anche i personaggi ancora di più.

Nella situazione non rara che hai un numero enorme di un oggetto / creatura dato durante il corso di un livello, ma solo una quantità limitata presente in una volta (come le ondate di nemici in uno sparatutto verticale) , quindi il loro raggruppamento è generalmente molto meglio per le prestazioni.

    
risposta data 04.06.2018 - 20:25
fonte

Leggi altre domande sui tag