anchor.diff:      assertThat(profit).isNotNull().isEqualTo(32600);
     }
   ----
  -s 
  +
   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ées dans les fonctions par défaut poposée par le JDK et le DoubleUnaryOperator en fait partie.
  -On démarre à partir de la classe DefaultProfitCalculator, et via andThen on la compose avec une autre fonction. Dans cet exemple des appels par référence de méthode ont été provilégié 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 : 
  -
  -[source,java]
  -----
  -@Test
  +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 : 
  +
  +[source,java]
  +----
  +  @Test
     public void givenTurnover_whenNotComposingAllDecoratorsWithAndThen_thenCorrectResult() {
   
       // Given.
  
positive.code: }
  ----
  
  Cette classe implémente une interface fonctionnelle proposée par défaut dans le JDK 8 DoubleUnaryOperator. Cette fonction prend un double en entrée et retourne un double en sortie, ce qui correspond à la signature des calculs présents dans la classe Expenses. L'implémentation de la méthode applyAsDouble est effectué avec un calcul par défaut.
  
  Et c'est tout... Nous allons pouvoir pouvoir désormais écrire notre decorator en Java 8, via un test : 
  
  [source,java]
  ----
  @Test
    public void givenTurnover_whenComposingAllDecoratorsWithAndThen_thenCorrectResult() {
  
      // Given.
  
negative.code: == b) Decorator en Java 8 avec l'API Stream
  
  Dans cette partie, nous allons voir qu'il est possible implémenter le pattern decorator avec l'API Stream.
  Nous allons créer une classe appelé "StreamDecorator" correspondant à une enum singleton (instance unique). Cette classe contient une méthode appelé calculateProfit qui sera exposée au client de l'API : 
  
  [source,java]
  ----
  