Sommaire

Exemple

Au sein du système de vente en ligne de véhicules, nous gérons des commandes issues de clients en France et au Luxembourg. La différence entre ces deux commandes concerne notamment le calcul de la TVA. Si en France, le taux de TVA est toujours de 19,6 %, il est variable au Luxembourg (12 % pour la partie des prestations, 15 % pour le matériel). Le calcul de la TVA demande deux opérations de calcul distinctes en fonction du pays.

Une première solution consiste à implanter deux classes distinctes sans surclasse commune : CommandeFrance et CommandeLuxembourg. Cette solution présente l’inconvénient majeur d’avoir du code identique mais qui n’a pas été factorisé comme l’affichage des informations de la commande (méthode affiche).

Une classe abstraite Commande peut être introduite pour factoriser les méthodes communes comme la méthode affiche.

Le pattern Template Method propose d’aller plus loin en proposant de factoriser du code commun au sein des méthodes. Nous prenons l’exemple de la méthode calculeMontantTtc dont l’algorithme est le suivant pour la France (en pseudo-code). ...