Introduction et usages du pattern Factory
Objectifs
Comprendre le fonctionnement du pattern Factory, ses usages en programmation orientée objet et fonctionnelle, et comment créer des objets et fonctions à la volée.
Résumé
Le Design Pattern Factory permet de générer du code à la volée pour faciliter la création d'objets et de fonctions en programmation.
Description
Nous allons commencer par le Design Pattern Factory, puisqu'il est conceptuellement assez simple. Il s'agit d'avoir du code qui va fabriquer du code derrière. On l'appelle Factory parce que cela signifie « usine » en français. Alors, très souvent, vous allez utiliser quelque chose pour fabriquer autre chose en programmation. Le plus souvent, ce sera une structure de données. Parfois, ce seront des objets, et donc quelque chose qui mélange des données et du code. Le Design Pattern Factory fonctionne effectivement avec les objets, mais également avec du code pur tel que des fonctions. Vous n'allez donc non pas, comme d'habitude, fabriquer uniquement des données pures, mais les outils qui vont vous permettre de manipuler ces données, vous allez les fabriquer, les générer à la volée. Comme tous les Design Patterns, le Design Pattern Factory n'est pas limité à la programmation orientée à l'objet. Mais si vous en avez fait, vous avez probablement fabriqué beaucoup d'objets avec. En effet, le simple fait d'instancier un objet, d'appeler son constructeur, par exemple avec « __new » pour Python, ou alors avec le mot-clé « new » dans d'autres langages de programmation, vous créez un objet, et donc vous utilisez une Factory. La plupart des langages orientés à l'objet ont donc une Factory qui est intégrée au langage. Alors, créer du code à la volée, évidemment, ça paraît abstrait. Pour quelles raisons pourrait-on vouloir avoir du code qui crée du code ? Eh bien, pour les langages fonctionnels, par exemple tels que Lisp ou dans une moindre mesure JavaScript, on va avoir très souvent la notion de clojure, dans laquelle on va emprisonner des données dans des callbacks. Je vous l'avais dit, il faut avoir des notions solides sur la manipulation des fonctions, puisque vous devez maîtriser ces notions pour pouvoir utiliser le pattern Factory quand on va vouloir fabriquer des fonctions à la volée. On va notamment très souvent utiliser les Factory quand on voudra utiliser des callbacks. On a vu tout à l'heure l'injection de dépendance, et ces callbacks parfois ont des signatures particulières. Pour pouvoir produire exactement la fonction qu'on veut avec la bonne signature, on va parfois utiliser la Factory pour les créer. Dans des langages où on a aussi des classes qui sont moins flexibles que dans d'autres langages, par exemple dans Java, on va avoir des usines à fabrication de classes qui vont vous permettre de passer des dépendances de l'un à l'autre, toujours dans le cadre de l'injection de dépendance. Vous l'aurez compris, derrière son apparente simplicité, le pattern Factory a vraiment un large panel d'usages. On peut commencer avec des choses très simples et aller vers le très complexe, et on va illustrer ça par des exemples par le code tout de suite.