Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ? A chaque fois que j'ai vu ce truc
apparaître comme par magie là où on ne l'attendait pas c'était pour une
des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
2- "C'est cool". C'est le seul motif de conception (encore merci
wikipedia, <http://fr.wikipedia.org/wiki/Motif_de_conception>) que j'ai
compris ou que j'arrive à utiliser alors je m'en sers. Sinon j'aurais lu
l'autre bouquin pour rien.
En définitive, existe-t-il des exemples justifiant l'emploi d'un
Singleton ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ? A chaque fois que j'ai vu ce truc
apparaître comme par magie là où on ne l'attendait pas c'était pour une
des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
2- "C'est cool". C'est le seul motif de conception (encore merci
wikipedia, <http://fr.wikipedia.org/wiki/Motif_de_conception>) que j'ai
compris ou que j'arrive à utiliser alors je m'en sers. Sinon j'aurais lu
l'autre bouquin pour rien.
En définitive, existe-t-il des exemples justifiant l'emploi d'un
Singleton ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ? A chaque fois que j'ai vu ce truc
apparaître comme par magie là où on ne l'attendait pas c'était pour une
des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
2- "C'est cool". C'est le seul motif de conception (encore merci
wikipedia, <http://fr.wikipedia.org/wiki/Motif_de_conception>) que j'ai
compris ou que j'arrive à utiliser alors je m'en sers. Sinon j'aurais lu
l'autre bouquin pour rien.
En définitive, existe-t-il des exemples justifiant l'emploi d'un
Singleton ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ? A chaque fois que j'ai vu ce
truc apparaître comme par magie là où on ne l'attendait pas c'était
pour une des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
2- "C'est cool". C'est le seul motif de conception (encore merci
wikipedia, <http://fr.wikipedia.org/wiki/Motif_de_conception>) que
j'ai compris ou que j'arrive à utiliser alors je m'en sers. Sinon
j'aurais lu l'autre bouquin pour rien.
3- "C'est cool et ça en jette de complexité". Y a un chapitre entier
sur le single ultime dans _Modern C++ Design_. Tous les problèmes sont
réglés une fois pour toute : durée de vie, interdépendance,
multi-threading (ah tiens, du DCL !) et j'en passe. C'est tellement
subtil, ça ne peut pas être inutile ?
4- Ca fait beau dans une doc ou sur un schéma de conception.
5- "J'étais pourtant certain qu'il n'y en aurait qu'un !"
6- Ca permet de corriger d'autres problèmes de conception.
En définitive, existe-t-il des exemples justifiant l'emploi d'un
Singleton ? N'est-il pas toujours possible de créer une instance lors
d'une phase d'initialisation quelconque et de l'enregistrer auprès
d'éventuels autres objets ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ? A chaque fois que j'ai vu ce
truc apparaître comme par magie là où on ne l'attendait pas c'était
pour une des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
2- "C'est cool". C'est le seul motif de conception (encore merci
wikipedia, <http://fr.wikipedia.org/wiki/Motif_de_conception>) que
j'ai compris ou que j'arrive à utiliser alors je m'en sers. Sinon
j'aurais lu l'autre bouquin pour rien.
3- "C'est cool et ça en jette de complexité". Y a un chapitre entier
sur le single ultime dans _Modern C++ Design_. Tous les problèmes sont
réglés une fois pour toute : durée de vie, interdépendance,
multi-threading (ah tiens, du DCL !) et j'en passe. C'est tellement
subtil, ça ne peut pas être inutile ?
4- Ca fait beau dans une doc ou sur un schéma de conception.
5- "J'étais pourtant certain qu'il n'y en aurait qu'un !"
6- Ca permet de corriger d'autres problèmes de conception.
En définitive, existe-t-il des exemples justifiant l'emploi d'un
Singleton ? N'est-il pas toujours possible de créer une instance lors
d'une phase d'initialisation quelconque et de l'enregistrer auprès
d'éventuels autres objets ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ? A chaque fois que j'ai vu ce
truc apparaître comme par magie là où on ne l'attendait pas c'était
pour une des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
2- "C'est cool". C'est le seul motif de conception (encore merci
wikipedia, <http://fr.wikipedia.org/wiki/Motif_de_conception>) que
j'ai compris ou que j'arrive à utiliser alors je m'en sers. Sinon
j'aurais lu l'autre bouquin pour rien.
3- "C'est cool et ça en jette de complexité". Y a un chapitre entier
sur le single ultime dans _Modern C++ Design_. Tous les problèmes sont
réglés une fois pour toute : durée de vie, interdépendance,
multi-threading (ah tiens, du DCL !) et j'en passe. C'est tellement
subtil, ça ne peut pas être inutile ?
4- Ca fait beau dans une doc ou sur un schéma de conception.
5- "J'étais pourtant certain qu'il n'y en aurait qu'un !"
6- Ca permet de corriger d'autres problèmes de conception.
En définitive, existe-t-il des exemples justifiant l'emploi d'un
Singleton ? N'est-il pas toujours possible de créer une instance lors
d'une phase d'initialisation quelconque et de l'enregistrer auprès
d'éventuels autres objets ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ? A chaque fois que j'ai vu ce
truc apparaître comme par magie là où on ne l'attendait pas c'était
pour une des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
Ca permet d'avoir aussi des variables globales qu'on peut utiliser
depuis d'autres variables globales sans problème d'ordre d'initialisation.
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ? A chaque fois que j'ai vu ce
truc apparaître comme par magie là où on ne l'attendait pas c'était
pour une des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
Ca permet d'avoir aussi des variables globales qu'on peut utiliser
depuis d'autres variables globales sans problème d'ordre d'initialisation.
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ? A chaque fois que j'ai vu ce
truc apparaître comme par magie là où on ne l'attendait pas c'était
pour une des raisons suivantes :
1- Ca permet d'avoir des variables globales sous couvert de
respectabilité. Bah oui, c'est dans le légendaire _Design Patterns_,
donc...
Ca permet d'avoir aussi des variables globales qu'on peut utiliser
depuis d'autres variables globales sans problème d'ordre d'initialisation.
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ? A chaque fois que j'ai vu ce truc
apparaître comme par magie là où on ne l'attendait pas c'était pour une
des raisons suivantes :
[...]
Comme toujours, la seule raison valide que je vois reste la [6] (une
mauvaise conception préalable justifie tout et n'importe quoi), auquel cas
le Singleton serait plus un motif de correction/réparation que de
conception.
Qu'en pensez-vous ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ? A chaque fois que j'ai vu ce truc
apparaître comme par magie là où on ne l'attendait pas c'était pour une
des raisons suivantes :
[...]
Comme toujours, la seule raison valide que je vois reste la [6] (une
mauvaise conception préalable justifie tout et n'importe quoi), auquel cas
le Singleton serait plus un motif de correction/réparation que de
conception.
Qu'en pensez-vous ?
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ? A chaque fois que j'ai vu ce truc
apparaître comme par magie là où on ne l'attendait pas c'était pour une
des raisons suivantes :
[...]
Comme toujours, la seule raison valide que je vois reste la [6] (une
mauvaise conception préalable justifie tout et n'importe quoi), auquel cas
le Singleton serait plus un motif de correction/réparation que de
conception.
Qu'en pensez-vous ?
Comme toujours, la seule raison valide que je vois reste
la [6] (une mauvaise conception préalable justifie tout et
n'importe quoi), auquel cas le Singleton serait plus un
motif de correction/réparation que de conception.
Qu'en pensez-vous ?
Comme toujours, la seule raison valide que je vois reste
la [6] (une mauvaise conception préalable justifie tout et
n'importe quoi), auquel cas le Singleton serait plus un
motif de correction/réparation que de conception.
Qu'en pensez-vous ?
Comme toujours, la seule raison valide que je vois reste
la [6] (une mauvaise conception préalable justifie tout et
n'importe quoi), auquel cas le Singleton serait plus un
motif de correction/réparation que de conception.
Qu'en pensez-vous ?
"Patrick Mézard" a écrit dans le message de news:
42da20a5$0$22286$Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ?
Qu'en pensez-vous ?
Que si on a des doutes sur l'utilité de qq chose,
c'est qu'on en a pas réellement besoin...
"Patrick Mézard" <pmezard@gmail.com> a écrit dans le message de news:
42da20a5$0$22286$8fcfb975@news.wanadoo.fr...
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ?
Qu'en pensez-vous ?
Que si on a des doutes sur l'utilité de qq chose,
c'est qu'on en a pas réellement besoin...
"Patrick Mézard" a écrit dans le message de news:
42da20a5$0$22286$Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et les
singletons, je me posais la question suivante : le "Singleton" est-il
vraiment utile à quelque chose ?
Qu'en pensez-vous ?
Que si on a des doutes sur l'utilité de qq chose,
c'est qu'on en a pas réellement besoin...
Du coup, on arrive à une deuxième question, la nécessité d'avoir des
variables globales non-const.
Du coup, on arrive à une deuxième question, la nécessité d'avoir des
variables globales non-const.
Du coup, on arrive à une deuxième question, la nécessité d'avoir des
variables globales non-const.
Je me demande si en fait tu n'es pas en train de t'attaquer
à toute forme d'état persistant entre appels, que cet état
prenne la forme de variable globale normale, de singleton ou
de variable statique dans des fonctions.
On peut naturellement toujours s'en passer: il suffit de
rendre cet état explicite et de se le faire passer comme
paramètre. On peut même prétendre sans être trop de
mauvaise fois que c'est en prévision pour le moment où cet
état ne pourra plus être partagé. Mais je ne pense pas pour
autant que le faire soit toujours la meilleure solution --
même sans erreurs de conception par ailleurs.
On arrive assez naturellement à des singletons quand on
conçoit son système comme composé de composants
interagissant entre eux. Certains peuvent être
intrinsèquement unique et connu de quasiment tout le monde
(par exemple le composant qui gère l'affichage). Ne pas en
faire un état global poserait des problèmes pratiques
(comment assurer l'initialisation de ces deux composants qui
se connaisse l'un l'autre, ou bien le passe partout, ou bien
on le stocke à des endroits multiples -- et je t'assure
qu'en pratique tous le monde "saura" que tous les moyens d'y
accéder sont équivalents, donc quasiment rien ne sera
facilité s'il faut rendre l'état non unique; j'ai déjà vécu
des cas où un mécanisme d'une généralité excessive avait été
mis en place et être en pratique inutilisable le moment venu
parce que, primo, tout le monde "savait" qu'il n'était pas
utilisé et avait agit avec cette hypothèse et, deuxio, la
généralisation qui était effectivement utile n'avait pas été
prévue).
Un exemple extrême où rendre l'état visible par les
appelants me semble absolument exclu: une fonction dont le
résultat ne dépend que des paramètres, mais coûteuse à
calculer. Comme elle est souvent appelée avec les mêmes
arguments, on décide de cacher le résultat.
Je me demande si en fait tu n'es pas en train de t'attaquer
à toute forme d'état persistant entre appels, que cet état
prenne la forme de variable globale normale, de singleton ou
de variable statique dans des fonctions.
On peut naturellement toujours s'en passer: il suffit de
rendre cet état explicite et de se le faire passer comme
paramètre. On peut même prétendre sans être trop de
mauvaise fois que c'est en prévision pour le moment où cet
état ne pourra plus être partagé. Mais je ne pense pas pour
autant que le faire soit toujours la meilleure solution --
même sans erreurs de conception par ailleurs.
On arrive assez naturellement à des singletons quand on
conçoit son système comme composé de composants
interagissant entre eux. Certains peuvent être
intrinsèquement unique et connu de quasiment tout le monde
(par exemple le composant qui gère l'affichage). Ne pas en
faire un état global poserait des problèmes pratiques
(comment assurer l'initialisation de ces deux composants qui
se connaisse l'un l'autre, ou bien le passe partout, ou bien
on le stocke à des endroits multiples -- et je t'assure
qu'en pratique tous le monde "saura" que tous les moyens d'y
accéder sont équivalents, donc quasiment rien ne sera
facilité s'il faut rendre l'état non unique; j'ai déjà vécu
des cas où un mécanisme d'une généralité excessive avait été
mis en place et être en pratique inutilisable le moment venu
parce que, primo, tout le monde "savait" qu'il n'était pas
utilisé et avait agit avec cette hypothèse et, deuxio, la
généralisation qui était effectivement utile n'avait pas été
prévue).
Un exemple extrême où rendre l'état visible par les
appelants me semble absolument exclu: une fonction dont le
résultat ne dépend que des paramètres, mais coûteuse à
calculer. Comme elle est souvent appelée avec les mêmes
arguments, on décide de cacher le résultat.
Je me demande si en fait tu n'es pas en train de t'attaquer
à toute forme d'état persistant entre appels, que cet état
prenne la forme de variable globale normale, de singleton ou
de variable statique dans des fonctions.
On peut naturellement toujours s'en passer: il suffit de
rendre cet état explicite et de se le faire passer comme
paramètre. On peut même prétendre sans être trop de
mauvaise fois que c'est en prévision pour le moment où cet
état ne pourra plus être partagé. Mais je ne pense pas pour
autant que le faire soit toujours la meilleure solution --
même sans erreurs de conception par ailleurs.
On arrive assez naturellement à des singletons quand on
conçoit son système comme composé de composants
interagissant entre eux. Certains peuvent être
intrinsèquement unique et connu de quasiment tout le monde
(par exemple le composant qui gère l'affichage). Ne pas en
faire un état global poserait des problèmes pratiques
(comment assurer l'initialisation de ces deux composants qui
se connaisse l'un l'autre, ou bien le passe partout, ou bien
on le stocke à des endroits multiples -- et je t'assure
qu'en pratique tous le monde "saura" que tous les moyens d'y
accéder sont équivalents, donc quasiment rien ne sera
facilité s'il faut rendre l'état non unique; j'ai déjà vécu
des cas où un mécanisme d'une généralité excessive avait été
mis en place et être en pratique inutilisable le moment venu
parce que, primo, tout le monde "savait" qu'il n'était pas
utilisé et avait agit avec cette hypothèse et, deuxio, la
généralisation qui était effectivement utile n'avait pas été
prévue).
Un exemple extrême où rendre l'état visible par les
appelants me semble absolument exclu: une fonction dont le
résultat ne dépend que des paramètres, mais coûteuse à
calculer. Comme elle est souvent appelée avec les mêmes
arguments, on décide de cacher le résultat.
Tu oublies le cas le + simple : quand je dois modéliser un objet qui ne peut
exister que de amnière unique dans un système (c'est le but après tout). Au
fait, tu utilises certainement des singletons régulièrement : cin, cout et
cerr par exemple.
27.3 Standard iostream objects
Header <iostream> synopsis
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
Tu oublies le cas le + simple : quand je dois modéliser un objet qui ne peut
exister que de amnière unique dans un système (c'est le but après tout). Au
fait, tu utilises certainement des singletons régulièrement : cin, cout et
cerr par exemple.
27.3 Standard iostream objects
Header <iostream> synopsis
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
Tu oublies le cas le + simple : quand je dois modéliser un objet qui ne peut
exister que de amnière unique dans un système (c'est le but après tout). Au
fait, tu utilises certainement des singletons régulièrement : cin, cout et
cerr par exemple.
27.3 Standard iostream objects
Header <iostream> synopsis
namespace std {
extern istream cin;
extern ostream cout;
extern ostream cerr;
extern ostream clog;
extern wistream wcin;
extern wostream wcout;
extern wostream wcerr;
extern wostream wclog;
}
Patrick Mézard wrote:Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ?
Tu oublies le cas le + simple : quand je dois modéliser un objet qui ne peut
exister que de amnière unique dans un système (c'est le but après tout). Au
fait, tu utilises certainement des singletons régulièrement : cin, cout et
cerr par exemple.
Patrick Mézard wrote:
Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ?
Tu oublies le cas le + simple : quand je dois modéliser un objet qui ne peut
exister que de amnière unique dans un système (c'est le but après tout). Au
fait, tu utilises certainement des singletons régulièrement : cin, cout et
cerr par exemple.
Patrick Mézard wrote:Bonjour,
Suite à la dernière itération de la discussion récurrente sur DCL et
les singletons, je me posais la question suivante : le "Singleton"
est-il vraiment utile à quelque chose ?
Tu oublies le cas le + simple : quand je dois modéliser un objet qui ne peut
exister que de amnière unique dans un système (c'est le but après tout). Au
fait, tu utilises certainement des singletons régulièrement : cin, cout et
cerr par exemple.