Pattern Decorateur - Découverte des design pattern

Nous commençons notre série des design patterns (patrons de conception) avec le Décorateur.

Pour suivre tous les projets, nous vous avons proposé un github dédié : Découverte des design patterns

Problématique ?

Comment réussir à ajouter des fonctionnalités à un Wookie, sans modifier la classe Wookie ?

Ici, nous souhaitons garder plusieurs grands principes en place :

  • SRP : Chaque classe a sa responsabilitĂ© : la classe de base garde sa cohĂ©sion
  • Expert : Chacun est spĂ©cialisĂ© dans sa mĂ©thode, si on souhaite modifier, on crĂ©e une nouvelle classe spĂ©cialisĂ©e.

 

Et surtout, nous ne pouvons ou ne souhaitons pas hériter.

Une premiĂšre solution

C’est ici qu’arrive le dĂ©corateur.

 

Imaginez :
Un wookie arrive durant un combat. Il souhaite avoir la capacitĂ© de tirer avec une arme. Cependant, cet arme doit lui permettre aussi de lancer un harpon et d’avoir un pointeur laser ?

Or, on ne peut pas modifier la classe Pistolet pour le Wookie.

 

Comment faire ?

Mettre en place un décorateur sur le pistolet.

Ici, nous aurons donc :

  1. Le pistolet normal : class Gun
  2. Le pistolet avec harpon : class HarpoonGunDecorator
  3. Le pistolet avec pointeur laser : class LaserGunDecorator

 

 

Mis en place, ça donne ça :


Et le résultat :

D’autres patrons possibles

Vous pouvez aussi penser aux patrons suivant :

  • Adapter
  • Proxy / Strategy

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