Abstract Factory

Nous voulons construire un ensemble de classes permettant de modéliser des algorithmes de calcul et de permettre à une application de les utiliser de manière transparente. De plus, nous voulons intégrer un mécanisme permettant de minimiser le nombre de calculs effectués lorsque nous faisons plusieurs appels à ces algorithmes.

exercice 1: Produit Abstrait

Donnez la déclaration de l’interface Algorithm. Les seules méthodes de la classe Algorithm sont string getName() et double getVal(int). Donnez l’implémentation des deux classes suivantes qui implémentent l’interface Algorithm :

exercice 2: Evaluation paresseuse

En utilisant la délégation, et sans modifier l’implémentation des algorithmes précédents, nous voulons fabriquer une version de nos deux algorithmes avec mise en mémoire tampon. Les valeurs déjà calculées sont stockées en mémoire vive et lorsque l’on appellera la fonction getVal(int) le résultat sera alors renvoyé directement sans re-calcul.

Pour le programme principal, il n’y aura donc aucune différence, les objets avec mise en mémoire tampon se feront passer pour les objets Algorithm originaux et un algorithme Padovan (réciproquement Fibonacci) avec cache fonctionnera pareil qu'un algorithme Padovan sans cache (réciproquement Fibonacci).

exercice 3: Fabrique abstraite

Nous voulons rendre complètement transparent pour le client le type d’algorithmes qu’il utilise (avec cache ou sans cache). En utilisant une fabrique abstraite, proposez et justifiez une solution sachant que les deux uniques types d’algorithmes que le client utilisera sont Fibonacci et Padovan.

exercice 4: Introspection

En utilisant le mécanisme d'introspection de java (voir documention de la classe Class), donnez l’implémentation d’un programme qui instancie une fabrique en fonction du nom de sa classe concrète passé comme paramètre (sur la ligne de commande) puis qui calcule et affiche la valeur de la suite de Fibonnaci à l’ordre 5.

La ligne suivante devra créer un classe qui s'appelle XXXXX et l'utiliser pour instancier une classe qui calcule Fiboncacci pour lancer le calcul avec la valeur 5 et afficher le résultat.

java Exemple XXXXXXX 5