anchor.diff:    }
   ----
   
  -N'est-ce pas grandiose ? nous avons pu réecrire le pattern décorator avec très peu de ligne de code. 
  -Le JDK 8 donne la possibilité de composer plusieurs fonctions entre elles via la "default" méthode "andThen". Cette méthode est proposée dans les fonctions par défaut du JDK et le DoubleUnaryOperator en fait partie.
  -On démarre à partir de la classe DefaultProfitCalculator, et via "andThen" on compose ce traitement avec une autre fonction. Dans cet exemple, des appels par référence de méthode ont été privilégiés afin d'avoir un code plus concis et plus expressif "Expenses::getOperatingExpenses", mais des lambdas expression auraient également fait l'affaire "e -> Expenses.getOperatingExpenses(e)".
  -
  -Ainsi, il devient très simple d'ajouter ou de supprimer des decorators. Dans l'exemple ci dessous nous supprimons le decorator qui représente les dépenses exceptionnelles : 
  +N'est-ce pas grandiose ? Nous avons pu réecrire le pattern décorator avec très peu de lignes de code. 
  +Le JDK 8 donne la possibilité de composer plusieurs fonctions entre elles via la "default" méthode "andThen". Cette méthode est proposée dans les fonctions par défaut du JDK, dont le DoubleUnaryOperator fait partie.
  +On démarre à partir de la classe DefaultProfitCalculator, et via "andThen" on compose ce traitement avec une autre fonction. Dans cet exemple, des appels par référence de méthode ont été privilégiés afin d'avoir un code plus concis et plus expressif (Expenses::getOperatingExpenses), mais des lambdas expression auraient également pu faire l'affaire (e -> Expenses.getOperatingExpenses(e)).
  +
  +Ainsi, il devient très simple d'ajouter ou de supprimer des decorators. Dans l'exemple ci-dessous nous supprimons le decorator qui représente les dépenses exceptionnelles : 
   
   [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: ----
  
  On considère dans cet exemple que a et b sont des entiers.
  La fonction initiale est la valeur 0. Le calcul va commencer avec la valeur par défaut et l'accumulateur "(a, b) -> a + b" va permettre de sommer chaque élement de la liste au fur et à mesure (somme le résultat de l'itération précédente avec le résultat de l'itération en cours). Si la structure est vide la valeur initiale est retournée, c'est-à-dire 0.
  
  Notre exemple suit le même principe, la fonction initiale est "DoubleUnaryOperator.identity()" et l'accumulateur est "DoubleUnaryOperator::andThen" ou "(ope1, ope2) -> ope1.andThen(ope2)". Comme vu précédemment, à chaque itération "andThen" va permettre de composer la fonction précédente avec la fonction en cours. Si la structure est vide "DoubleUnaryOperator.identity()" sera retourné (dans ce cas une fonction vide).
  
  