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


Répondre à