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 :
Le pistolet normal : class Gun
Le pistolet avec harpon : class HarpoonGunDecorator
Le pistolet avec pointeur laser : class LaserGunDecorator