Moi j'avoue ne pas savoir comment me passer de singleton quand par exemple dans une appli j'ai
- un logger
- une liste dabonnement
- une liste de connexion style socket
- une connexion à une Bdd
- une liste d'objet métier (par exemple une liste d'ordre boursier)
Tous ces objets listes sont uniques et doivent a priori être appelable à droite et à gauche dans l'appli: dans la gui dans le core engine etc
Ma solution est d'avoir une classe 'main' singleton qui possède en membre donné tous les objets listes , et qui est déclarée comme étant un singleton... ce qui rend indirectement tous les autres objets listes singleton
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
|
class Main
{
boost::mutex mutex_;
ListeAbonnement listeAbo_;
ListeOrdre listeOrdre_;
ListeConnexion listeCnx_;
static Main& pInstance()
{
static Main main;
return main;
}
}; |
je ne vois pas trop comment je pourrais faire d'autre étant donné, que ces listes doivent être accessible dans les différents thread à savoir
- les thread socket
- le thread de la gui
- le thread de la Bdd
- les thread de calcul