Bonjour,
Depuis toujours, je me pose la même question, en ce qui concerne les objets "globaux", à savoir par exemple un contexte, une connexion à la base de données, etc.
J'ai une application avec plusieurs forms.
Au démarrage, je crée un objet SqlConnexion.
Comment faire pour l'avoir disponible "partout", à savoir :
- dans toutes les forms
- dans tous les controls des différentes forms
Et ce, sans devoir me le trimbaler à la main dans tous les objets du genre :
C'est moche.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 frmClient fClient = new frmClient(); fClient.cnx = this.cnx;
A une époque, j'étais assez fan d'un système plus ou moins cousin au singleton : la classe statique avec constructeur : ça me permettait d'ouvrir la connection au premier appel, puis de l'avoir disponible partout.
De mémoire ça ressemblait plus ou moins à ça :
Et ensuite, n'importe où dans le code, j'avais juste à faire "MyCnx.cnx" pour appeler ma connexion sans me soucier de où elle avait été ouverte ni par qui ni comment.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 static class MyCnx { public static SqlConnexion cnx = new SqlConnexion(cnxstring); static MyCnx() { cnx.Open(); } }
Cependant, on m'a à l'époque déconseillé cette méthode.
Quoi d'autre ?
Je ne cherche pas à faire absolument un singleton. Je cherche avant tout à disposer d'une instance de mon objet partout sans devoir me trimbaler une référence dans tous mes objets.
Partager