anchor.diff:  
   == b) Decorator en Java 8 avec l'API Stream
   
  -Dans cette partie nous allons voir qu'il est possible d'implémenter le pattern decorator avec l'API Stream.
  +Nous allons voir maintenant qu'il est possible d'implémenter le pattern decorator avec l'API Stream.
   Nous allons créer une classe appelée "StreamDecorator" correspondant à une enum singleton (instance unique). Cette classe contient une méthode appelée "calculateProfit" qui sera exposée au client de l'API : 
   
   [source,java]
  
positive.code: 
  Chaque méthode "static" effectue le calcul souhaité en se basant sur un double en entrée et en sortie.
  
  Nous allons ensuite montrer différente façons d'implémenter ce pattern en Java 8.
  
  == a) Decorator en Java 8 avec de la composition de fonctions
  
  
negative.code: }
  ----
  
  Le principe ici est de passer une suite de fonctions representée par des DoubleUnaryOperator (équivalent à un tableau de fonctions). La méthode prend également en paramètre le CA.
  L'API stream propose une "factory method" "of" permettant d'initialiser une Stream à partir d'un tableau. Nous utilisons ensuite la méthode "reduce" qui permet de réduire les éléments du flux à une seule valeur.
  
  En programmation fonctionnelle le reduce correspond à du "fold". Le principe est de passer 2 fonctions, une initiale (et valeur par défaut) et l'autre permettant d'accumuler des éléments. Il devient très simple avec ce type d'opérateur de calculer la somme des élements d'une liste.
  