Quello che hai qui sta usando il Pattern Singleton per garantire che tutti i chiamanti ricevano la stessa istanza dell'oggetto di connessione. Suoni efficienti per essere con e, a patto che la tua applicazione sia puramente a thread singolo e mai tenti di fare più di uno [database correlato ] cosa alla volta, probabilmente funzionerà abbastanza bene. Se si tratta di un programma particolarmente lungo (come, ad esempio, un servizio di Windows che funziona 24 ore su 24, 7 giorni su 7), si potrebbe anche considerare l'aggiunta di un codice difensivo in questo metodo per garantire che la connessione sia ancora "valida"; che il database non è stato spento per, diciamo, il servizio di pulizia notturno dall'ultima volta che hai usato la connessione.
I problemi iniziano non appena il tuo programma ottiene qualsiasi tipo di Parallelismo , il tipo di cose che funzionano con un'interfaccia utente guidata dagli eventi sorprendentemente bene.
Ora, la tua connessione al database potrebbe essere in uso, gestendo l'elaborazione di un evento, mentre l'utente fa clic sull'applicazione, facendo sempre più richieste per la tua connessione ora sovraccaricata e bloccata. Ora la tua applicazione è "vista" male, perché non può fare più di una cosa alla volta, cosa che i tuoi utenti potrebbero aspettarsi.
Usando più di una connessione al database, questi casi sono "migliori".
La maggior parte dei sistemi operativi eseguirà automaticamente il pool di connessioni per voi, rendendo quindi l'apertura di una nuova connessione un'operazione light er , ma c'è ancora un overhead limitato. Spingere tutto in modo sequenziale lungo la singola connessione è efficiente; l'avvio di una nuova connessione per ogni operazione non lo è. Devi fare una chiamata di giudizio sul modo in cui la tua applicazione deve andare.
Non è necessario attenersi rigidamente a questa decisione! Il metodo che hai per fornire la tua connessione [Singleton] potrebbe essere modificato in una Fabbrica; se la chiami "ogni tanto", può restituirti l'oggetto di connessione "uno"; se la chiami in "rapida successione" o se rileva che la connessione è "occupata", potrebbe scegliere di restituirne una nuova.
Dipende tutto da quanti problemi ti causano.