Contrainte : on ne peut pas toucher aux implémentations originales.
On a vu qu'on peut comparer le calcul des 3 implémentations sans aucun pattern, comme dans la classe
Comparaison
:
int N = 1000; double pi1 = Pi1.calculePi(N); double pi2 = Pi2.calculePi(N); double pi3 = Pi3.calculePi(N);L'inconvénient de cette solution est que le code client est lié aux implémentations. On va utiliser le pattern Strategy pour décoreller les deux, en se donnant une contrainte : on n'a pas le droit de modifier les implémentations existantes.
Utilisez comme point de départ la solution située dans ce répertoire.
Dans cette implémentation, les classes
Pi1
, Pi2
et Pi3
ont une méthode static pour effectuer le calcul :
public static double calculePi(int N)On peut tout à fait utiliser une méthode static dans le cadre d'un pattern Strategy, mais on fait le choix d'implémenter le plus fidèlement possible le diagramme du GOF.
-
Utilisez un autre design pattern pour passer de cette situation static à une situation d'instance, de manière à avoir cette signature :
public double calculePi(int N)
-
Modifiez votre code en introduisant une classe
PiContext
, qui va encapsuler la paramètreN
. La signature de la méthode devient :public double calculePi(PiContext c)