Theorie sur les ALLOCATIONS MEMOIRE - optimiser l'allocation mémoire

Bonjour a tous,

Je pratique J2SE depuis peu et je me pose une grande question:
Je vais essayer d’être clair,

Imaginons que je définisse une sous-classe dérivant de JRadioButton (appelons cette sous-classe “BOUTON”). La classe contenant BOUTON s’appelle CONTROLE par exemple. La classe contient en donnée privée un BOUTON et bien sur un certain nombre de méthodes spécifiques à ce que je veux faire.

Idéalement je veux que la classe CONTROLE contienne un grand nombre de boutons et zones de texte,etc…
J’en fais ainsi une classe générique me permettant de générer des controles à la demande.

Plaçons nous maintenant dans un programme utilisant cette classe CONTROLE.
Si j’ai besoin de créer 2 BOUTONS de propriétés différentes mais accessibles par les méthodes définies dans CONTROLE.
Qu’est ce qui est le mieux pour l’allocation de mémoire?

BOUTON but1 = new BOUTON()
BOUTON but2 = new BOUTON()

                               ou bien

CONTROLE c = new CONTROLE()
BOUTON but1 = c.bouton.methode(parametre);
BOUTON but2 = c.bouton.methode(autre_parametre);

Dans un cas j’utilise 2 fois l’instruction “new”, alors que dans l’autre je ne l’utilise qu’une fois (dans le constructeur de CONTROLE) et grace aux méthodes définies, j’agis sur les dimensions des boutons par exemple et j’affecte chaque bouton à l’unique bouton de CONTROLE modifié par ces méthodes.

Lequel de ces deux cas dois-je utiliser??

Dans ta deuxième proposition, si tu veux que but1 et but2 contiennent tout deux des objets BOUTON, il faut bien que tu fasse un new quelque part dans ta méthode CONTROLE.methode(). Donc vu que tu fais 2 appels à cette méthode, tu as bien deux new (en plus du premier pour créer un objet CONTROLE).

Salut Raynor,

en fait non, dans la classe CONTROLE, je ne fais qu’un seul new.
pour les 2 boutons but1 et but2, qui ont par exemple 2 dimensions différentes.
j’utilise la méthode qui modifie les dimension de CONTROLE.bouton (car CONTROLE possede un BOUTON en donnée privée).
c est cette donnée privée que je modifie et j’affecte ses valeurs aux différents boutons but1 et but2.

Ca dépend ce que tu fais je dirais.

Si tu génères des boutons pour n’avoir que l’affichage associé, et donc le dessin du bouton, alors tu peux éventuellement en faire un renderer - ie: un composant en charge juste du dessin. Et dans ce cas, c’est ce que tu fais dans le deuxième cas.

Sinon tu peux y aller avec deux boutons si les comportements ne sont pas les mêmes (mais même, tu peux encore ruser)