 |
C++Talk.NET C++ language newsgroups
|
| View previous topic :: View next topic |
| Author |
Message |
Zoupla Guest
|
Posted: Mon Jul 21, 2003 12:31 pm Post subject: Votre avis est le bienvenue |
|
|
Bonjour, je tente une idée avec le pseudo code qui suit. Qu'en pense-vous ?
--> objet.h
class Objet
{
static Objet *Objets[MAXOBJETS];
static int ObjetNum;
Objet *CreerObjet();
/*
Pas mal de méthodes ici dont void Execute();
*/
}
--> objet.cpp
Objet *Objet::Objets[MAXOBJETS];
int Objet::ObjetNum = 0;
Objet *Objet::CreerObjet()
{
Objets[ObjetNum] = new Objet();
Objets[ObjetNum]->Execute();
return Objets[++ObjetNum];
}
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...
Merci
|
|
| Back to top |
|
 |
Jean-Marc Bourguet Guest
|
|
| Back to top |
|
 |
Fabien LE LEZ Guest
|
|
| Back to top |
|
 |
Zoupla Guest
|
Posted: Mon Jul 21, 2003 6:48 pm Post subject: Re: Votre avis est le bienvenue |
|
|
Christophe Lephay - [email]christophe-lephay (AT) wanadoo (DOT) fr[/email] :
| Quote: | Pourrais-tu d‚tailler un peu cet argument, stp ? En effet je ne
comprends pas trŠs 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...
|
|
| Back to top |
|
 |
Christophe Lephay Guest
|
Posted: Mon Jul 21, 2003 7:00 pm Post subject: Re: Votre avis est le bienvenue |
|
|
"Zoupla" <pouet (AT) pouet (DOT) com> a écrit dans le message de
news:Xns93BFD3DA8EF27Zoupla (AT) 213 (DOT) 228.0.75...
| Quote: | Christophe Lephay - [email]christophe-lephay (AT) wanadoo (DOT) fr[/email] :
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
|
|
| Back to top |
|
 |
Zoupla Guest
|
Posted: Mon Jul 21, 2003 9:34 pm Post subject: Re: Votre avis est le bienvenue |
|
|
Christophe Lephay - [email]christophe-lephay (AT) wanadoo (DOT) fr[/email] :
| Quote: | 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...
|
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 ??
|
|
| Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|