Pattern G.R.A.S.P Créateur

Problème initial

Qui doit se charger de créer une nouvelle instance d’une classe donnée ?

Solution associée et définition

Le pattern Créateur est lui aussi un modèle de conception relativement intuitif. Il consiste en la détermination de la responsabilité de la création d'une instance d'une classe par une autre.

Une classe X peut créer des instances, des objets, d’une classe Y si :
  • X contient des instances de Y (dans une liste par exemple)
  • X utilise des instances de Y
  • X possède des informations nécessaires à la création des instances de Y

Exemple

Soit le diagramme de classe suivant :



On se demande alors qui a la responsabilité de créer une instance de classe Produit. Pour cela on regarde les classes présentes dans le diagramme et qui seraient susceptibles de répondre à l’un ou plusieurs des critères énoncés précédemment.

Les classes Panier et Stock contiennent toutes les deux des instances de Produit et utilise toutes les deux des instances de Produit. En revanche la classe Panier ne possède aucune information qui permettrait de créer des instances de Produit tandis que la classe Stock de par son nom et sa fonction est apte à créer un Produit.

Par conséquent on ajoute une méthode creerProduit dans la classe Stock dont les arguments sont ceux nécessaires pour créer un Produit.

A retenir

Pour appliquer ce pattern il faut se poser les questions suivantes :
  • Quelles classes utilisent des instances de Y ?
  • Quelle classe possèdent les informations nécessaires pour créer une instance de Y ?