À la découverte du Design Pattern « Template Method »

L’un des gros dilemmes de blogueur traitant de technologie et de développement logiciel francophone que je fais face est la traduction des termes spécifiques au domaine. Ces termes sont habituellement en anglais et, à mon avis, sont difficilement traduisible sans perdre leur sens original.

Vous l’avez peut-être remarqué en me lisant régulièrement. Quelques termes restent en italique lorsque je les écris. C’est plus fort que moi. Un framework reste un framework. Ce n’est pas vrai que je vais aller écrire « le cadre de travail .NET 4.5 ». Ça ne fonctionne juste pas! Même le site Stack Exchange dédié à la langue française est d’accord avec moi.

Ceci étant dit, l’autre mot que je n’arrive pas à me résoudre à traduire c’est le design pattern. Il s’agit de l’un des mots dans la même catégorie que le framework. Il s’écrit en italique sous sa forme anglaise. Point à la ligne.

Cela m’amène au sujet que je voulais amener dans ce billet. Il s’agit d’un design pattern dont j’ai connu le nom que tardivement. Ça a mis un nom sur l’une de mes principales approches lorsque je me lance dans un refactoring qui va mener à un ajout de fonctionnalités.

Il s’agit du Template Method Pattern. Il y a plusieurs variations de la façon de l’implémenter selon votre humeur et le langage que vous utilisez. Règle générale, en une phrase, il s’agit d’une classe qui implémente des fonctionnalités qui seront réutilisées par des sous instances de celle-ci.


public class LinkGenerator
{
public string GetLink(string url, string title)
{
return string.Format(GetLinkFormatPattern(), url, title);
}
public virtual string GetLinkFormatPattern()
{
return "<a href=\"{0}\">{1}</a>";
}
}
public class BoldLinkGenerator : LinkGenerator
{
public override string GetLinkFormatPattern()
{
return "<strong><a href=\"{0}\">{1}</a></strong>";
}
}
using System.Console;
public class Start
{
public static void Main(string[] args)
{
WriteLine(new LinkGenerator().GetLink("http://www.frenchcoding.com", "French Coding"));
WriteLine(new BoldLinkGenerator().GetLink("http://www.frenchcoding.com", "French Coding"));
ReadKey();
}
}

Le code qui est présenté ici est une conception simpliste du Template Method Design. Ce qui doit être cependant retenu c’est que LinkGenerator définit une implémentation de base qui peut être redéfini dans ses sous instances.

D’ailleurs, prenez note que l’exemple de code utilise le using Static de C# 6.0. C’est pour cette raison que les lignes 27 et 28 s’écrivent ainsi.

En guise de conclusion, cette approche est souvent le premier refactoring que je tente lorsque je dois revoir la structure d’un module. Réorganiser les propriétés et méthodes d’une classe afin d’en extraire les parties qui peuvent être réutilisées dans d’autres sous instances est un bon exercice pour déterminer ce qui peut être réécrit ou réutilisé.

Publicité

Auteur : Pascal Paradis

Je suis les mains et le cerveau derrière http://frenchcoding.com. Je développe des microservices chez @UbisoftMTL. Amateur de Hockey et j'aime la technologie, en général.

Laisser un commentaire

Entrer les renseignements ci-dessous ou cliquer sur une icône pour ouvrir une session :

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.

%d blogueueurs aiment cette page :