1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
| /*L'objet que tu utilise réellement */
class TonObjet
{
/* tout ce qu'il te faut */
};
/* par facilité, autant définir un type de tableau :D */
typedef std::vector<TonObjet*> TabObjet;
/* déclaration anticipée du médiateur */
class Mediateur;
/* la classe au départ de laquelle l'objet est créé/ détruit */
class CreateurObjet
{
public:
CreateurObjet(Mediateur* med);
~CreateurObjet();
TonObjet* CreeObjet(/* parametres utiles */);
void DetruitObjet(TonObjet*);
private:
Mediateur * med;
};
/* soit le médiateur contient tous les tableaux d'objet, soit, on peut même
envisager qu'une classe séparée s'en occupe, sous la forme de */
class GestionaireTabObjet
{
public:
GestionaireTabObjet( Mediateur* med);
~GestionaireTabObjet();
void AjouteObjet(TonObjet*);
void ObjetaNUll(TonObjet*);
const TabObjet& GetTableau() const;
private:
TabObjet tab;
};
/* "Tant qu'à faire", un tableau de gestionnaire, c'est pas mal :D */
typede std::vector<GestionaireTabObjet*> TabGestionnaire
/* et, enfin, la classe qui communique avec tout cela */
class Mediateur
{
public:
Mediateur();
~Mediateur();
void AjoutGestionnaire(GestionaireTabObjet*);
void ObjetCree(TonObjet*);
void ObjetDetruit(TonObjet*);
private:
TabGestionnaire gest;
}; |
Partager