Voila, j'utilise donc une méthode statique et deux membres statiques pour
gérer la création de l'ensemble des instances de cette classe... Ainsi le
code correspondant ne se retrouve pas ailleur dans le reste du code.
Ca fonctionne très bien et me permettra d'ajouter (toujours par
l'intermédiaire de méthodes statiques) de nouvelles fonctionnalités ayant
pour but la "gestion" des instances créés...
Pourriez-vous me dire :
1) Si cette manière de faire porte un nom particulier (et ne me répondez
pas : oui "portnaouak!")
2) Si c'est viable...
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Jean-Marc Bourguet
Zoupla writes:
Pourriez-vous me dire : 1) Si cette manière de faire porte un nom particulier (et ne me répondez pas : oui "portnaouak!")
C'est une variante de "Factory" (on utilise souvent une classe auxilliaire singleton mais des statiques suffisent dans les cas simples).
2) Si c'est viable...
C'est meme courant.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Zoupla <pouet@pouet.com> writes:
Pourriez-vous me dire :
1) Si cette manière de faire porte un nom particulier (et ne me répondez
pas : oui "portnaouak!")
C'est une variante de "Factory" (on utilise souvent une classe
auxilliaire singleton mais des statiques suffisent dans les cas
simples).
2) Si c'est viable...
C'est meme courant.
A+
--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org
Pourriez-vous me dire : 1) Si cette manière de faire porte un nom particulier (et ne me répondez pas : oui "portnaouak!")
C'est une variante de "Factory" (on utilise souvent une classe auxilliaire singleton mais des statiques suffisent dans les cas simples).
2) Si c'est viable...
C'est meme courant.
A+
-- Jean-Marc FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html Site de usenet-fr: http://www.usenet-fr.news.eu.org
Fabien LE LEZ
On 21 Jul 2003 12:31:33 GMT, Zoupla wrote:
static Objet *Objets[MAXOBJETS];
Ça ne répond pas à la question, mais a priori, limiter artificiellement la taille d'un tableau est une mauvaise idée.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
On 21 Jul 2003 12:31:33 GMT, Zoupla <pouet@pouet.com> wrote:
static Objet *Objets[MAXOBJETS];
Ça ne répond pas à la question, mais a priori, limiter
artificiellement la taille d'un tableau est une mauvaise idée.
--
Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/
et http://www.aminautes.org/forums/serveurs/tablefr.html
Archives : http://groups.google.com/advanced_group_search
http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Ça ne répond pas à la question, mais a priori, limiter artificiellement la taille d'un tableau est une mauvaise idée.
-- Tout sur fr.* (FAQ, etc.) : http://www.usenet-fr.net/fur/ et http://www.aminautes.org/forums/serveurs/tablefr.html Archives : http://groups.google.com/advanced_group_search http://www.usenet-fr.net/fur/usenet/repondre-sur-usenet.html
Zoupla
Christophe Lephay - :
Pourrais-tu dtailler un peu cet argument, stp ? En effet je ne comprends pas trs bien "le code correspondant ne se retrouve pas ailleurs". Quelle diffrence avec un constructeur, dans lequel le code utilis pour construire et initialiser les objets ne se retrouvent pas plus "ailleurs" ?
Non, le code du constructeur s'execute après new et concerne l'objet lui même alors que dans mon cas ma méthode CreateObject execute du code avant new et qui concerne un ensemble d'instances... Ce code ne se trouve pas "ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code appelant...
Pourrais-tu dtailler un peu cet argument, stp ? En effet je ne
comprends pas trs bien "le code correspondant ne se retrouve pas
ailleurs". Quelle diffrence avec un constructeur, dans lequel le code
utilis pour construire et initialiser les objets ne se retrouvent pas
plus "ailleurs" ?
Non, le code du constructeur s'execute après new et concerne l'objet lui
même alors que dans mon cas ma méthode CreateObject execute du code avant
new et qui concerne un ensemble d'instances... Ce code ne se trouve pas
"ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code
appelant...
Pourrais-tu dtailler un peu cet argument, stp ? En effet je ne comprends pas trs bien "le code correspondant ne se retrouve pas ailleurs". Quelle diffrence avec un constructeur, dans lequel le code utilis pour construire et initialiser les objets ne se retrouvent pas plus "ailleurs" ?
Non, le code du constructeur s'execute après new et concerne l'objet lui même alors que dans mon cas ma méthode CreateObject execute du code avant new et qui concerne un ensemble d'instances... Ce code ne se trouve pas "ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code appelant...
Christophe Lephay
"Zoupla" a écrit dans le message de news:
Christophe Lephay - :
Pourrais-tu d,tailler un peu cet argument, stp ? En effet je ne comprends pas trSs bien "le code correspondant ne se retrouve pas ailleurs". Quelle diff,rence avec un constructeur, dans lequel le code utilis, pour construire et initialiser les objets ne se retrouvent pas plus "ailleurs" ?
Non, le code du constructeur s'execute après new et concerne l'objet lui même alors que dans mon cas ma méthode CreateObject execute du code avant new et qui concerne un ensemble d'instances... Ce code ne se trouve pas "ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code appelant...
D'accord, c'est plus clair :)
Comme l'a dit Jean-Marc, donc, c'est exactement l'idée d'une fabrique (factory) sans laquelle le code client est obligé de connaitre le type de l'objet à instancier (de connaitre [type] pour pouvoir faire new [type])...
Par contre, si le mode de fabrication est susceptible de varier en fonction des besoins de l'application, ou au fur et à mesure que tes hiérarchies s'élargissent, je te recommanderais de ne pas mettre dans la classe même le processus de fabrication...
Chris
"Zoupla" <pouet@pouet.com> a écrit dans le message de
news:Xns93BFD3DA8EF27Zoupla@213.228.0.75...
Pourrais-tu d,tailler un peu cet argument, stp ? En effet je ne
comprends pas trSs bien "le code correspondant ne se retrouve pas
ailleurs". Quelle diff,rence avec un constructeur, dans lequel le code
utilis, pour construire et initialiser les objets ne se retrouvent pas
plus "ailleurs" ?
Non, le code du constructeur s'execute après new et concerne l'objet lui
même alors que dans mon cas ma méthode CreateObject execute du code avant
new et qui concerne un ensemble d'instances... Ce code ne se trouve pas
"ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code
appelant...
D'accord, c'est plus clair :)
Comme l'a dit Jean-Marc, donc, c'est exactement l'idée d'une fabrique
(factory) sans laquelle le code client est obligé de connaitre le type de
l'objet à instancier (de connaitre [type] pour pouvoir faire new [type])...
Par contre, si le mode de fabrication est susceptible de varier en fonction
des besoins de l'application, ou au fur et à mesure que tes hiérarchies
s'élargissent, je te recommanderais de ne pas mettre dans la classe même le
processus de fabrication...
Pourrais-tu d,tailler un peu cet argument, stp ? En effet je ne comprends pas trSs bien "le code correspondant ne se retrouve pas ailleurs". Quelle diff,rence avec un constructeur, dans lequel le code utilis, pour construire et initialiser les objets ne se retrouvent pas plus "ailleurs" ?
Non, le code du constructeur s'execute après new et concerne l'objet lui même alors que dans mon cas ma méthode CreateObject execute du code avant new et qui concerne un ensemble d'instances... Ce code ne se trouve pas "ailleurs" c'est à dire qu'ainsi il n'est pas implémenté dans le code appelant...
D'accord, c'est plus clair :)
Comme l'a dit Jean-Marc, donc, c'est exactement l'idée d'une fabrique (factory) sans laquelle le code client est obligé de connaitre le type de l'objet à instancier (de connaitre [type] pour pouvoir faire new [type])...
Par contre, si le mode de fabrication est susceptible de varier en fonction des besoins de l'application, ou au fur et à mesure que tes hiérarchies s'élargissent, je te recommanderais de ne pas mettre dans la classe même le processus de fabrication...
Chris
Zoupla
Christophe Lephay - :
Par contre, si le mode de fabrication est susceptible de varier en fonction des besoins de l'application, ou au fur et mesure que tes hirarchies s'largissent, je te recommanderais de ne pas mettre dans la classe mme le processus de fabrication...
Ca signifierait implémenter d'une part la classe (par ex) Connexion et de l'autre ConnexionManager ? Cette dernière étant dans ce cas la factory dont tu parles ??
Par contre, si le mode de fabrication est susceptible de varier en
fonction des besoins de l'application, ou au fur et mesure que tes
hirarchies s'largissent, je te recommanderais de ne pas mettre dans
la classe mme le processus de fabrication...
Ca signifierait implémenter d'une part la classe (par ex) Connexion et de
l'autre ConnexionManager ? Cette dernière étant dans ce cas la factory dont
tu parles ??
Par contre, si le mode de fabrication est susceptible de varier en fonction des besoins de l'application, ou au fur et mesure que tes hirarchies s'largissent, je te recommanderais de ne pas mettre dans la classe mme le processus de fabrication...
Ca signifierait implémenter d'une part la classe (par ex) Connexion et de l'autre ConnexionManager ? Cette dernière étant dans ce cas la factory dont tu parles ??