Information sur l'article
Categorie: design-patterns, csharp, oop, template-method
Mise à jour: 2025-12-22
Temps de lecture: 7 min
Template Method en C# : définir le squelette d'un algorithme
Mise à jour: 2025-12-22
Qu'est-ce que le Template Method ?
Le Template Method est un pattern comportemental qui définit le squelette d'un algorithme dans une classe de base, tout en laissant les sous-classes implémenter les étapes spécifiques. L'idée est de factoriser le code commun et de permettre aux sous-classes de personnaliser certaines étapes sans modifier la structure globale.
Cas d'usage réel
Imaginons un système de traitement de données : générer un rapport PDF, un rapport Excel ou un rapport JSON suit la même logique générale (récupérer les données, les filtrer, les formater, les exporter) mais les détails d'implémentation diffèrent selon le format. Le Template Method permet de centraliser ce flux commun.
Représentation graphique
Flux de l'algorithme
Implémentation en C#
Avantages
Code réutilisable : le flux commun n'est défini qu'une seule fois dans la classe de base.
Flexibilité : chaque sous-classe peut implémenter les étapes à sa façon sans casser la structure globale.
Maintenance simplifiée : si le flux change, on le modifie au même endroit pour tous les formats.
Respect du Liskov Substitution Principle (LSP) : toutes les sous-classes respectent le contrat établi.
Inconvénients
Rigidité : si le flux a besoin de branches complexes, le pattern devient lourd.
Hiérarchie de classe : peut créer une profonde hiérarchie si trop de variations existent.
Quand l'utiliser ?
Lorsque plusieurs algorithmes partagent la même structure générale mais varient dans leurs détails d'implémentation.
Quand vous voulez éviter la duplication de code en centralisant la logique commune.
Pour les pipelines de traitement (ETL, rapport, validation) où chaque étape est commune mais l'implémentation varie.
Alternative : Strategy Pattern
Si vous préférez une composition plutôt qu'une hiérarchie, le Strategy Pattern est une alternative où chaque étape de l'algorithme peut être injectée comme une stratégie indépendante. Cela offre plus de flexibilité mais requiert plus de configuration.