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
