Introduction aux design patterns de construction
Présentation
Les design patterns de construction ont pour vocation d’abstraire les mécanismes permettant de créer des objets. Un système utilisant ces design patterns devient indépendant de la façon dont les objets sont créés et, en particulier, des mécanismes d’instanciation des classes concrètes.
Ces design patterns encapsulent l’utilisation des classes concrètes et favorisent ainsi l’utilisation des interfaces dans les relations entre objets, augmentant les capacités d’abstraction dans la conception globale du système.
Ainsi, le design pattern Singleton permet de construire une classe possédant au maximum une instance. Le mécanisme gérant l’accès unique à cette seule instance est entièrement encapsulé dans la classe. Il est transparent pour les clients de cette classe.
Problèmes liés à la création d’objets
1. Problématique
Dans la plupart des langages à objets, la création d’objets se fait grâce au mécanisme d’instanciation qui consiste à créer un nouvel objet par appel de l’opérateur new paramétré par une classe (et éventuellement des arguments du constructeur de la classe dont le but est de donner aux attributs leur valeur initiale). Un tel objet est donc une instance de cette classe.
Les langages les plus utilisés aujourd’hui comme PHP, Java, C++ ou C# utilisent le mécanisme de l’opérateur new.
En PHP, une instruction de création d’un objet s’écrit ainsi :
$objet = new Classe();
Dans certains cas, il est nécessaire de paramétrer la création d’objets. Prenons l’exemple d’une méthode construitDoc qui crée des documents. Elle peut construire des documents PDF, RTF ou HTML. Généralement le type du document à créer est transmis en paramètre à la méthode sous forme d’une chaîne de caractères, ce qui donne le code suivant :
class ConstructeurDocument
{
protected Document $resultat;
public function construitDoc(string $typeDoc): Document
{ ...