Essential Developer Skills - Design patterns

Les design patterns

Au menu du jour, les patrons de conception !

On ne va pas parler de votre patron mais des “patrons” au sens qu’on leur connaît dans la géométrie, comme un standard. Comme à mon habitude et pour comprendre à quoi ils servent, je vais vous raconter une petite histoire pour illustrer mon propos.

Des problèmes, encore des problèmes

Quand vous développez, vous créez de la dette technique, que vous le vouliez ou non. Dés le début du développement d’une application, il est alors important de bien la concevoir afin d’éviter d’alourdir cette dette qui démarre “J1”. Cependant, il est parfois difficile de s’adapter ou de se projeter sur les problématiques futures. Ces dernières peuvent générer de la frustration lorsqu’on se rend compte que nos fondations ne sont pas optimales.

Vous pensez être le seul à connaitre ces problèmes ? Non, rassurez-vous.

Dés 1995, le fameux « Gang of Four » (GoF, Erich Gamma, Richard Helm, Ralph Johnson et John Vlissides) formalise les patrons de conception dans un livre intitulé… “Design patterns”. Mais que sont-ils et pourquoi est-ce si intéressant ?

Un langage commun pour les gouverner tous

Lorsque l’on est dans une phase de conception d’une architecture ou d’un développement quelconque, il peut être difficile de communiquer entre développeurs et / ou architectes. De plus, le fait de conceptualiser demande d’avoir une facilité de compréhension, d’abstraction et d’avoir une vision suffisamment large de ce que l’on est en train de produire. Le fait de transmettre cette vision peut être compliqué.

En parlant tous le même langage et en ayant connaissance des différentes problématiques, on saura trouver les bons design patterns à utiliser. En un instant, tout devient plus compréhensible mais surtout, vous êtes aussi en train de consolider votre application sur des fondamentaux qui ont fait leur preuve ! Pourquoi ne pas en profiter ? Cela fait plus de 20 ans que les patrons de conception existent et qu’ils marchent !

Ne pas en vouloir, c’est un peu comme refuser une évidence qui marchera, au moins, dans 99% des cas (histoire de dire qu’on trouvera toujours une exception ?), alors profitez-en !

Les différents types

On regroupe la plupart des patrons de conception sous 3 types, les patrons… :

  • de création
  • de structure
  • de comportement

Il peut en exister d’autres qui ne rentrent pas forcément dans ces catégories mais au moins, cela permet de nous aiguiller dans notre recherche.

Au sein de ces différents types, voici une petite liste de mes “préférés”. D’une part, parce que je les maîtrise mais aussi parce que je ne me vois pas développer sans eux dès que je dois attaquer un développement de taille “moyenne” :

  • La spécification (Specification)
  • L’inversion de contrôle (Dependency Injection / IoC)
  • La fabrique (Factory)
  • La façade (Facade)
  • L’adaptateur (Adapter)
  • Le décorateur (Decorator)

Il y en a bien d’autres ! Mais à force de les pratiquer, il m’arrive de les utiliser sans m’en rendre compte.

Dans d’autres articles, nous verrons comment ils se formalisent ; quels sont les problèmes qui nous amènent à les utiliser et ce qu’ils permettent de résoudre !