Le Mardi 15 Juillet 2003 20:59, Cedric Beust a �crit : > > C'est simple: si tu as des "new Toto()" partout dans ton code et qu'un > jour, tu veux utiliser une implementation differente, tu dois remplacer > ca partout dans ton code. > > Si tu as utilise une methode factory "createToto()", il te suffit de > changer l'implementation de celle-ci. >
Il est quand m�me rare que je change l'implementation d'une classe simplement pour... pour quoi, au fait ? Je le ferais peut �tre, si au moins je ne devais pas passer 3 plombes � trouver la bonne properties. Dans l'�tat actuel des choses, sauf cas tr�s exceptionnel, je ne change jamais. Surtout que je sais parfaitement que dans ma configuration du classpath c'est le bordel, et que par ailleurs j'avais eu un jour de s�v�res ennuis simplement parce que j'avais mis telle impl�mentation avant telle autre dans le classpath et que du coup je perdais je ne sais quelle compatibilit�. Bref, maintenant, avec les factorys, une fois que �a fonctionne, je ne touche plus � rien. Je le r�p�te : factory sans gestion de conf n'est que peinture sur mis�re. Les factorys peuvent �tre utiles s'il y a avec une gestion de conf � la mode RPM, par exemple. Mais y a-t-il quelque chose dans ce domaine d'un peu standardis� en Java ? Il m'arrive de modifier le nom des classes en court de d�veloppement, ou en cours d'�tude, � un moment o� le code n'est pas stabilis�. C'est vrai qu'une factory pourrait alors m'aider. Le seul ennui, c'est que si j'ai appel� une classe "Toto", sa factory "TotoFactory", et que je change le nom de Toto, en bonne logique, il faut aussi que je change le nom de la factory... Bref, � ce moment l�, �a ne fonctionne pas non plus. De plus la sp�cialisation est en g�n�ral aussi essentielle que la g�n�ralisation. Quand j'�cris "General g = SpecialFactory.getImplementation()", je con�ois tr�s bien que "g" soit une abstraction et que la variable ne sache pas exactement de quoi il s'agit. Mais cela me g�ne que moi, je ne le sache pas. Il y a la g�n�ralisation, bien s�r, mais aussi la sp�cialisation. Les deux sont importants, et dans les syst�mes � factory, la mise en oeuvre des sp�cialisations, qui sont 9 fois sur 10 obligatoires, est souvent un casse t�te total. Et bien s�r elles ne survivent pas � un changement d'implementation, ce qui fait qu'il faut recommencer � resp�cialiser, et on perd tout ce que l'on croit avoir gagn�. Quand tu �cris General g = new Special(), g�n�ralisation ET sp�cialisation se passent de fa�on parfaitement �vidente et parfaitement lisible. Le programmeur peut g�rer les deux avec les outils habituels de la POO. Avec les factorys il doit en passer par les options, et c'est � mon avis une mauvaise approche. A+. -- SARL diaam informatique - 04 50 44 26 54 Ingenierie, d�veloppements de syst�mes d'information http://www.diaam-informatique.com
