Ricordiamo subito un principio della OOP
Preferire la composizione all’ereditarietà
(oft-quoted maxim of OOP)
Lo Strategy pattern viene usato per evitare l’ereditarietà a compile-time
- Permette di separare TANTE diverse azioni da eseguire in TANTE diverse interfacce (un’interfaccia per ogni azione)
- Mantenere un separatore (interfaccia Duck) tra le interfacce e la classe (ModelloDuck)
- Tale separatore conterrà un reference per ogni interfaccia
- Flessibilità RUNTIME: posso realizzare nuovi oggetti (papere) e decidere le azioni volare/non volare
Vedere questo schema delle classi: