anchor.diff:  }
   ----
   
  -Une static factory method est exposé au client de l'API pour initialiser la classe avec un nom parlant. Cette méthode s'appelle "from" et se base sur la valeur qui servira de base de calcul, dans notre cas le CA; 
  -Un contrôle est effectué sur la valeur afin de renvoyer une runtime exception si la valeur est nulle. Le constructeur de la classe est appelé avec cette valeur et une fonction initiale vide (ainsi le paramètre global "function" de la classe ne sera pas nul et on évitera des nullPointerException).
  +Une "static factory method" est exposée au client de l'API pour initialiser la classe avec un nom parlant. Cette méthode s'appelle "from" et prend en paramètre la valeur qui servira de base de calcul, dans notre cas le CA. 
  +Un contrôle est effectué sur la valeur afin de renvoyer une "runtime exception" si elle est nulle. Le constructeur de la classe est appelé avec cette valeur et une fonction initiale vide (ainsi le paramètre global "function" de la classe ne sera pas nul et permettra d'éviter des nullPointerException).
   
   [source,java]
   ----
  
positive.code:   }
  ----
  
  La méthode "calculateProfit" est appelée avec la CA et la liste des fonctions decorator séparée une virgule. Ceci a été via la paramètre de méthode suivant : "DoubleUnaryOperator... operators".
  De nouveau le client de l'API dispose d'un traitement très souple, facilement modifiable et évolutif.
  
  Un exemple sans le decorator "ExceptionalExpenses" : 
  
  [source,java]
  ----
  @Test
    public void givenTurnover_whenNotComposingAllDecoratorsWithStream_thenCorrectResult() {
  
      // Given.
      final double turnover = 100000;
  
      // When.
      final double profit = StreamDecorator.INSTANCE.calculateProfit(turnover,
                               new DefaultProfitCalculator(), Expenses::getOperatingExpenses, Expenses::getDeductibleTaxes,
                               Expenses::getRemuneration);
  
      // Then.
      assertThat(profit).isNotNull().isEqualTo(34600);
  
negative.code: 
  == b) Decorator en Java 8 avec une API fluent
  
  Dans cette dernière partie, nous allons voir qu'il est possible d'implémenter le pattern decorator via une API "fluent" et permettant d'indiquer clairement au client de l'API les traitements effectués.
  L'objectif va être de créer une classe Wrapper de type builder afin de composer nos fonctions de façon fluide.
  
  Voici le code complet de la classe appelée FluentDecorator : 
  