anchor.diff:  
   [source,java]
   ----
  -@Test
  +  @Test
     public void givenTurnover_whenComposingAllDecorators_thenCorrectResult() {
   
       // Given.
  
positive.code:   }
  ----
  
  Le calcul commence de droite à gauche, on commence par le DefaultProfitCalculator, enuite cette classe est passée en paramètre du décorator OperatingExpensesDecorator et ainsi de suite.
  OperatingExpensesDecorator applique le calcul de DefaultProfitCalculator plus le sien.
  
  Voici un second test qui n'applique pas tous les décorator, et montre qu'il est très simple d'ajouter ou de supprimer un decorator au runtime. Le code peut ainsi être évolutif : 
  
  [source,java]
  ----
  @Test
    public void givenTurnover_whenNotComposingAllDecorators_thenCorrectResult() {
  
      // Given.
  
negative.code: Une subtilité est à constater içi, la classe prend également en paramètre l'interface "ProfitCalculator". 
  En effet, chaque decorator va appliquer le calcul du decorator qui le précède et va ensuite y ajouter son calcul à lui. C'est ce comportement qui permet d'ajouter des traitements au runtime.
  
  Nous allons commencer par une classe proposant un calcul par défaut, appelé "DefaultProfitCalculator". Il est, en effet, utile de commencer par une classe de type "profitCalculator" qui ne dépend de rien lors de son instantiation. Ceci correspond au calcul initial des decorators : 
  
  [source,java]
  ----
  