On Thu, 12 Jun 2003 15:01:48 +0200, St�phan BERNARD <[EMAIL PROTECTED]> wrote:(...). D'autre part, j'aimerais pouvoir ajouter d'autres algos, sans devoir faire d'ajouts � ma classe m�re (que je consid�re surtout comme une interface).
Tu viens e te vendre, l� ! Si ta classe m�re est l� pour fournir un contrat, alors elle *doit* �tre une interface, et non une classe, car tu
seras alors libre de fournir l'impl�mentation qui convient.
OK, mais le fait d'avoir une interface ne me permet pas plus de definir une m�thode statique abstraite, non ?
(...)
La cha�ne de responsabilit� est alors le pattern le plus adapt� : tu disposes d'un "AlgorithmDeterminer" qui est une classe analogue au ValRepository de tout � l'heure.
Dans cette classe, tu disposes d'une m�thode getBestAlgo, qui va te retourner une classe impl�mentant A, et correspondant au probl�me
pr�cis.
Initialement, l'AlgorithmDeterminer r�cup�re une instance de B gr�ce �
une b�te association. Mais rien n'emp�che B de v�rifier s'il est le bon algorithme, et sinon de retourner un meilleur algorithme. En revanche,
dans ce cas, la d�termination du meilleur algorithme que B ne peut se faire
que dans ton instance de B.
Finallement, un bon mod�le conceptuel pour trouver la meilleure impl�mentation reviendrait � d�finir ton jeu d'algos comme une machine �
�tat, o� chaque �tat est un algorithme particulier.
Et ce probl�me l� peut �tre r�solu de mani�re particuli�rement �l�gante
en Java, en utilisant justement un bon m�lange d'interfaces et de classes
... mais je te laisse le soin de d�terminer la meilleure impl�mentation.
C'est effectivement sur ce type de solution que je vais me pencher, mais �a m'ajoute un casse-t�te conceptuel suppl�mentaire l� o� je ne m'attendais pas � des difficult�s :-(
Je ne connaissais pas le pattern Delegate (mais �a me para�t lourd, je vais n�anmoins essayer de me documenter l�-dessus).
Lourd ? Ca revient juste � �crire tes m�thodes sous la forme : public void do() { delegate.do(); } Alors effectivement, si tu as des tonnes de m�thodes, c'est lourd ;-)
Disons que j'ai commenc� par regarder la doc de l'API java, sans trop comprendre comment c'�tait utilis�. J'ai donc �crit un peu vite...
St�phan BERNARD
