5
Possiamo sostituire completamente l'ereditarietà usando il modello di strategia e l'iniezione di dipendenza?
Per esempio: var duckBehaviors = new Duckbehavior(); duckBehaviors.quackBehavior = new Quack(); duckBehaviors.flyBehavior = new FlyWithWings(); Duck mallardDuck = new Duck(DuckTypes.MallardDuck, duckBehaviors) Poiché la classe Duck contiene tutti i comportamenti (astratto), non sembra necessario creare una nuova classe MallardDuck(che si estende Duck). Riferimento: Head First Design Pattern, Chapter 1.