Exemple
Le système de vente de véhicules dispose d’une classe VueCatalogue qui affiche, sous la forme d’un catalogue électronique, les véhicules disponibles sur une page web.
Nous voulons maintenant afficher des données supplémentaires pour les véhicules "haut de gamme", à savoir les informations techniques liées au modèle. Pour réaliser l’ajout de cette fonctionnalité, nous pouvons réaliser une sous-classe d’affichage spécifique pour les véhicules "haut de gamme". Maintenant, nous voulons afficher le logo de la marque des véhicules "moyen et haut de gamme". Il convient alors d’ajouter une nouvelle sous-classe pour ces véhicules, surclasse de la classe des véhicules "haut de gamme", ce qui devient vite complexe.
Il est aisé de comprendre ici que l’utilisation de l’héritage n’est pas adaptée à ce qui est demandé pour deux raisons :
-
L’héritage est un outil trop puissant pour réaliser un tel ajout de fonctionnalité.
-
L’héritage est un mécanisme statique.
Le pattern Decorator propose une autre...