SsaLaroLana ha scritto:
Ho letto, e concettualmente piu o meno ci sono...lo stesso metodo che fa cose diverse...la stessa classe che fa cose diverse...ecc...ecc...ma...ho le idee parecchio confuse
Per come l'hai appena detto sì, sembrerebbero confuse.
Il pattern Strategy permette di creare una "famiglia" di algoritmi, ciascuno incapsulato in un tipo (oggetto), facilmente interscambiabili a runtime.
Un "client" (nel senso generale di
chi usa) può quindi usare indifferentemente uno qualunque degli algoritmi che può essere scelto dal client stesso o può essergli assegnato da qualcun'altro.
Tutto questo è fatto tipicamente basandosi su una interfaccia e su N classi che implementano quella interfaccia per definire i vari "algoritmi" (comportamenti in generale).
SsaLaroLana ha scritto:
l'esercizio riguarda dei conticorrente, e devo gestire con una classe "ContoCorrenteImpl" , altre due classi "ContoCorrenteA" e "ContoCorrenteB"...le classi A e B sono pressochè uguali e implementano la stessa interfaccia(ContoCorrente), differiscono solo in due metodi : "prelievo()" e "cambioAnno()", in cui nel "ContoCorrenteA" vengono applicati certi costi per il prelievo, mentre per "ContoCorrenteB" altri costi ancora...Mi viene chiesto di fare in modo che "ContoCorrenteImpl" permetta di fare ciò che fanno "ContoCorrenteA" e "ContoCorrenteB", e di utilizzare appunto per risolvere il problema il pattern Strategy, facendo in modo di passare al costruttore della classe "ContoCorrenteImpl" un oggetto contente le strategie(che riguardano appunto i metodi "prelievo()" e "cambioAnno()"...Detto questo, non ho idea di come procedere...sarei MOLTO grato se qualcuno di buon cuore mi desse qualche dritta e magari una delucidazione su questo pattern...Grazie...
Per come hai spiegato, io ho capito che:
- ContoCorrenteImpl è il "client" che usa la "strategia" di ContoCorrente
- ContoCorrente è la interfaccia che rappresenta a livello astratto la "strategia"
- ContoCorrenteA/ContoCorrenteB sono le implementazioni concrete della strategia
Quindi se è così, quale è il dubbio preciso?