Exercice : Utilisation de Strategy pour calculer pi

On souhaite réutiliser les différentes implémentations de l'exercice "Calcul approché de pi" pour permettre à du code client de choisir l'implémentation.
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.
  1. 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)
  2. Modifiez votre code en introduisant une classe PiContext, qui va encapsuler la paramètre N. La signature de la méthode devient :
    public double calculePi(PiContext c)