Le Mardi 15 Juillet 2003 17:24, Cedric Beust a �crit :
>
> J'en profite pour rappeler ma regle:  pour les types tres generiques, le
> mot-cle "new" ne doit se trouver *que* dans des classes de type
> factory.  Jamais dans ton code principal.

Je vote contre ! Je pense qu'il ne faut utiliser qu'exceptionnellement les 
factories, juste lorsque tu y es contraint et forc� par la mode ambiante.

Leur r�sultat principal est que, alors que en Java quand tu vois "new Toto()" 
tout le monde comprend ce que c'est, avec les factories il faut se tartiner 
les miriades d'options, propri�t�s, settings, pr�f�rences et j'en passe, 
chaque "provider" ayant d'ailleurs sa propre d�finition de ces termes et tout 
le monde utilisant toute et partie de ces fonctionalit�s, bref c'est 
ind�broussalliable.

Et c'est fait pour �viter une recompilation, alors que la plupart des 
environnements � factories n�cessitent de toutes fa�ons la pr�sence d'un 
compilateur, donc de toutes fa�ons cela ne sert � rien.

Que j'�crive quelque part "toto = new Toto()" ou 
"titi.toto.tutu=org.truc.muche.Toto" je vois vraiment pas ce que cela change. 
Mon sentiment est que en Java, c'est mieux.

Et en plus c'est bas� sur des m�thodes statiques qui sont loin d'�tre une 
panac�e en java. Pour contourner ce probl�me, on utilise le truc g�nial des 
"factories de factories", ce qui ajoute � la simplicit� : on sait d�s le 
d�part que ce sera chaud. Et comme un bonheur ne vient jamais seul, aux 
factories de factories correspondent bien s�r les "implementations de 
implementations". 

Et en plus on pr�tend que c'est pour mieux diriger la cr�ation d'objets... 
J'avoue ne pas saisir.

Pire que pire, comme on n'est jamais tr�s s�r que la factory finisse par 
trouver la bonne classe, tous les paquagings sont oblig�s de fournir un 
paquage "par d�faut", et l'on se retrouve avec 150 Xalan/Xerces sur le disque 
dur. Le mod�le de la factory n'ayant pas en soutien un mod�le de gestion de la 
configuration, il n'est qu'une couche de peinture qui cache la mis�re.

Lorsque l'on veut un un truc tr�s g�n�rique, mon avis est que le mieux est de 
r�gler �a par l'arborescence des classes, et que le mieux est d'�crire tout 
simplement : "ClasseGenerique gen = new ClasseSpecifique();". Je ne vois 
absolument pas ce que les factories apportent par rapport � ce mod�le.

Bref je te remercie de m'avoir donn� l'occasion de dire clairement tout le mal 
que je pense des factories. A moins que tu n'aies une bonne gestion de la 
configuration dans ton sac, il vaut mieux les exclure ; c'est mon opinion.


-- 
SARL diaam informatique - 04 50 44 26 54
Ingenierie, d�veloppements de syst�mes d'information
http://www.diaam-informatique.com

Répondre à