anchor.diff:  }
   ----
   
  -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
  +Cette classe implémente une interface fonctionnelle (= à une fonction) 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ée avec un calcul par défaut.
  +
  +Et c'est tout... Nous allons pouvoir désormais écrire notre decorator en Java 8, via un test : 
  +
  +[source,java]
  +----
  +  @Test
     public void givenTurnover_whenComposingAllDecoratorsWithAndThen_thenCorrectResult() {
   
       // Given.
  
positive.code:     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
    public void givenTurnover_whenNotComposingAllDecoratorsWithAndThen_thenCorrectResult() {
  
      // Given.
  
negative.code: 
  == 2) Decorator en Java 8
  
  Nous allons commencer par montrer les méthodes "static" proposées par la garbage class "Expenses" : 
  
  [source,java]
  ----
  