Design pattern Factory (fabrique)–Découverte des Design patterns

Nous voilà avec plusieurs Design patterns déjà présentés, et pourtant nous n’avons pas réellement parlé de comment découpler la création de l’utilisation d’une classe.
Après le Design Pattern Composite, continuons notre aventure avec le Factory, ou Fabrique (en français).

Pour suivre le projet : le github.

Problématique

Plusieurs armes sont utilisées par les Wookies, par les Jedis, ou bien les StormTroopers. Elles respectent toutes la même interface.

Or, à chaque fois que nous les créons, nous appelons l’instancieur, sans se soucier de la dépendance entre le type de la variable et l’instanciation.

Comment faire si demain, au lieu d’appeler une arme avec pointeur laser, on appelle une arme avec double laser ?

Nous avons créé une dépendance, un fort couplage entre le type et son instance. Il nous faut nous en sortir.

Une première solution

C’est là que la Fabrique, la Factory, arrive.

 

Nous allons créer un Proxy entre la variable souhaitée et son instanciation : la Fabrique.

Nous aurons donc :

  • Une Fabrique : GunFactory, qui sera une classe abstraite.
  • Une interface IGun : pour proposer un contrat, et ne plus ĂŞtre dĂ©pendant des classes
  • Des classes d’armes implĂ©mentant l’interface IGun.

Comment faire ?

Voici le diagramme de classe :

fabric design pattern

Voici la mise en place :

Une note

Plutôt que d’utiliser un switch pour choisir le type d’arme, essayez avec le Activator.CreateInstance.

Vous avez testé ?

D’autres patrons possibles

Nous découvrirons le DI (Injection de dépendance), encore plus évolutif.

Notre adresse

1 rue du guesclin
44000 Nantes

Notre téléphone

+33 2 79 65 52 87

Société

DevToBeCurious SARL
84860163900018 - Nantes B 848 601 639