anchor.diff:  }
   ----
   
  -Taxes déductible => DeductibleTaxesDecorator : 
  +Taxes déductibles => DeductibleTaxesDecorator : 
   [source,java]
   ----
   public class DeductibleTaxesDecorator extends AbstractProfitDecorator {
  
positive.code:   }
  ----
  
  Le calcul commence de droite à gauche, le point de départ est le DefaultProfitCalculator, ensuite 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]
  ----
  
negative.code: ----
  
  Cette classe implémente l'interface précédente et doit donc proposer l'implémentation de la méthode "calculate(double turnover)". 
  Chaque decorator va appliquer une dépense en proposant l'implémentation de la méthode "applyExpense(double turnover)".
  
  Une subtilité est à constater ici : 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. 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ée "DefaultProfitCalculator". Il est 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 : 
  