Une solution peut consister � mettre tous les objets auxquels tu veux acc�der dans tes
autres classes dans un singleton initialis� par ta classe maitresse.
Au niveau des classes utilisatrices un MonSingleton.getInstance() suffit pour
retrouver tes objets.
Tu peux aussi mettre des attributs public static dans ta classe maitresse mais ce
n'est pas tr�s �l�gant je trouve.
Personnellemenent quand j'ai des attributs � faire suivre � des classes filles
(enchainement de dialogues typiquement) je passe les r�f�rences dans le constructeur.
C'est clair, on sait � la lecture de la doc quelles sont les classes utilis�es (ce qui
n'est pas le cas si tu fais appel � des attibuts static d'une classe).
Cependant s'il s'agit de connexions JDBC je passerais plut�t par JNDI.C'est standard,
�a �vite d'avoir � r�inventer la roue.
-----Original Message-----
From: Aurelien Mazurie <[EMAIL PROTECTED]>
To: [EMAIL PROTECTED]
Date: Tue, 1 Oct 2002 13:50:35 +0200
Subject: Classe ma�tresse dans un programme
Bonjour � tous,
J'ai une question sur l'organisation des programmes Java; mon
programme a une classe "ma�tresse", qui lors du d�marrage instancie
toutes les autres en se passant � leurs constructeurs. Ainsi, chacune
des classes filles peut utiliser des m�thodes de cette classe ma�tresse.
Par exemple, la classe ma�tresse s'occupe de la connection � une base
de donn�e, et r�cup�re un handle pour cette connection
(java.sql.Connection); ce que je veux, c'est que chaque classe fille
puisse avoir acc�s � cette variable (comme la variable est le r�sultat
de l'instanciation d'une classe d�di�e � la connection, j'aimerai ne
cr�er cette derni�re classe qu'une fois pour toute, pour toutes les
classes du programme).
Pour le moment je proc�de comme �a; le code ma classe ma�tresse est:
================================================================
import classes_filles.*;
public class MaClasseMaitresse
{
public Connection connection; // variable � partager
chez toutes
les classes-filles
public MaClasseMaitresse()
{
connection = .... // on
initialise cette variable...
// Puis on initialise une classe fille en
passant � son
constructeur
// une r�f�rence � la classe ma�tresse
ClassFille fille = new ClassFille(this);
}
================================================================
Ce qui fait que, pour la classe-fille, je peux acc�der � la variable
"connection" de la classe ma�tresse de la fa�on suivante:
================================================================
public class ClassFille
{
public Connection connection; // variable
destin�e � recevoir la
valeur du handle Connection tel que d�fini par la classe ma�tresse
public MaClassMaitresse classMaitresse;
public ClassFille (MaClassMaitresse maitresse)
{
classMaitresse = maitresse;
connection = classMaitresse.connection; // et
hop !
...
================================================================
Mon probl�me c'est que c'est lourd de devoir cha�ner la r�f�rence � la
classe ma�tresse dans toutes les classes filles (qui elle-m�me cr�ent
des sous-filles, auxquelles la r�f�rence doit �galement �tre pass�e...)
N'y a-t'il pas un moyen de stocker quelque part la r�f�rence � la
classe ma�tresse, pour que n'importe quelle autre classe du programme
puisse utiliser ses m�thodes ? (sachant que la classe ma�tresse est
instanci�e avant toutes les autres) Je n'ai pas d'exp�rience dans ce
domaine; lorsque mon programme �tait � ses d�buts, c'�tait jouable mais
maintenant ca devient p�nible (et j'imagine, une g�ne pour la vitesse
d'ex�cution / occupation m�moire) de passer cette r�f�rence de fille en
fille, sachant que j'ai une arborescence de classes assez importante.
J'imagine que c'est un probl�me classique qu'a du rencontrer tout
programmeur d�butant en java ?
En vous remerciant,
Aur�lien Mazurie
-- S'il n'y a pas de solution, il n'y a pas de probl�me --