Les patrons de conception (plus communément appelés « design patterns ») définissent un ensemble de bonnes pratiques à mettre en place pour résoudre des problèmes de conception fréquemment rencontrés par les développeurs. Il en existe plusieurs et en général, un patron de conception décrit une structure de classes utilisant des interfaces. Ils s’appliquent donc, pour la plupart, à des développements utilisant la programmation orientée objet (POO). Comme son nom l’indique, la POO permet de travailler avec des objets. Un objet peut représenter un concept, une idée ou bien une entité physique comme un meuble, un animal, etc. et la classe que j’ai évoquée précédement n’est autre que le squelette d’un objet.
Contexte d’utilisation
Depuis mes débuts dans le monde du développement web, j’ai fait l’usage de nombreux patrons de conception. Celui que j’utilise dans presque toutes les circonstances (et qui est aujourd’hui le plus populaire) est le modèle MVC (Modèle - Vue - Contrôleur). Ce modèle décrit une manière efficace d’architecturer une application en la décomposant en trois parties : le modèle qui encapsule la logique métier et l’accès aux données, la vue qui gère les interactions avec le client et le contrôleur qui fait le lien entre les deux. M’en étant servi dans 80% des projets que j’ai réalisés, ce patron m’a permis de construire des applications offrant une séparation efficace et claire des différentes responsabilités au sein de celles-ci. Ce fut par exemple le cas lorsque j’ai travaillé sur So’Mob, une plateforme web de covoiturage gratuite, dédiée aux personnes en situation de précarité ou à mobilité réduite.
Un autre patron que j’apprécie énormément et que j’ai découvert lors de mon stage au sein de la société JeChange est le patron observateur. Il est utilisé pour envoyer un signal à des modules qui vont jouer le rôle d’observateurs. Lorsque ceux-ci reçoivent une notification, ils vont alors effectuer l’action adéquate en fonction des informations qu’ils ont reçues et qui ont été envoyées par le ou les modules qu’ils observent et que l’on appelle les observables. Il m’a été très utile lorsque j’ai travaillé sur le développement d’un formulaire générique sous la forme d’un chat conversationnel. Par exemple, il y avait dans ce formulaire, une question où le client devait entrer son adresse postale. Une fois qu’il avait fait cela, le module gérant la question (l’observable) devait envoyer une notification à un autre module (l’observateur) qui devait afficher une carte géographique et un marqueur pointant sur cette adresse.
Bien évidemment, je maîtrise d’autres patrons de conception tels que le singleton qui permet de restreindre l’instanciation d’une classe à un seul objet ou encore la fabrique (ou factory) qui permet d’instancier dynamiquement des objets en fonction d’un besoin bien précis sans en connaître exactement le type.
Autocritique
Avec l’expérience que j’ai aujourd’hui vis à vis de cette compétence, je peux dire avec certitude qu’en aucun cas, un développeur ne doit faire l’impasse sur les patrons de conception. Bien évidemment, je ne dis pas qu’il faut tous les connaître par coeur (ce qui n’est pas mon cas) mais il faut savoir qu’ils existent tout en ayant une idée de ce que peuvent apporter chacun d’entre eux.
Lorsque l’on rencontre un problème très difficile à résoudre durant le développement d’une fonctionnalité, c’est bien souvent un patron de conception qui va nous apporter la solution. De plus, si l’on tombe face à un recruteur qui s’y connait en technique lors d’un entretien d’embauche, il y a de fortes chances que celui-ci vous demande de parler de deux ou trois patrons de conception que vous maîtrisez et dans quels cas vous les utiliser.
Conclusion
Aujourd’hui, les patrons de conception occupent une place très importante que ce soit dans ma carrière professionnelle mais aussi pour mes futurs projets personnels. Plus qu’une simple compétence, c’est un atout que je mets à profit pour me sortir de situations techniques complexes et qui me permet d’accroître mes connaissances dans le développement web. Je pense très bientôt me former sur tous les principaux patrons de conception que je ne connais pas encore afin d’élargir mes capacités à les utiliser rapidement quand cela est nécessaire tout en étant au point sur la façon dont il faut les utiliser.