Le Mardi 24 Septembre 2002 16:48, Cedric Beust a �crit :

>
> Je ne comprends pas pourquoi tellement de personnes essaient d'utiliser
> clone().  C'est une methode paresseuse et en general dangereuse, surtout
> si tu ne sais pas exactement quelle est la semantique des "sous-clones".
> Il suffit d'un petit bug, comme retourner une reference au lieu d'une
> copie, et c'est la porte ouverte a des bugs subtils et tres difficiles a
> trouver.
>

Qu'entends-tu par "s�mantique des sous-clones" ? C'est les clones pour les 
h�ritiers de ta classe, ou les clones pour les attributs ?

Si c'est le premier, je ne vois pas pourquoi une classe se pr�occuperait du 
comportement de ses h�ritiers, sauf par charit� :-)

Si c'est le second, il me semble qu'il faut cloner ce qui est en relation de 
composition avec l'objet � cloner ; pour ceux qui sont en aggr�gation, cela 
se discute et se documente.

De toutes fa�ons je trouve que c'est une des grandes faiblesses du langage 
Java en g�n�ral et des beans en particulier que de ne pas expliciter ces 
relations d'aggr�gation et de composition. A partir de l� on est en 
permanence menac� par ces bugs subtils dont tu parles.

Ils nous bassinent avec des super-serveurs et des J2EE avec 36 m�gas de 
modularit� tr�s modulaire, mais des trucs comme l'aggr�gation ils connaissent 
pas. Monde ridicule...


> Mieux vaut ecrire tes propres composants et les cloner en utilisant les
> principes simples du MVC.
>
> Typiquement, un panneau a un modele, qui represente son etat.  Cloner un
> panneau existant devrait etre aussi simple que:
>
> MyPanel p2 = new MyPanel();
> p2.setModel(p1.getModel());
>

C'est ce que je vais faire, finalement, mais comme j'aime bien la m�thode 
clone, ma premi�re impulsion �tait de le faire dans le cadre de la m�thode 
clone ! 

Remarque aussi que ta m�thode ne convient pas � tous les cas : la partie 
"vue" peut tr�s bien �voluer par elle m�me (changement de couleur, selection, 
ou simplement position d'une partie d�filante), et ta m�thode ne permet pas 
de reproduire �a. La partie "vue" sera toujours pr�sent�e dans sa forme 
initiale.


> Je peux detailler, mais en regle general, l'initialisation de mes
>  [...]

Pour le reste tu as tout � fait raison.

A+.

-- 
SARL diaam informatique - 04 50 77 12 60
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com

Répondre à