Retour aux articlesRetour Accueil

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

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.