Originariamente inviato da lizard88mc
Quando questo dado viene lanciato, cliccando cioè sul suo pulsante, voglio fare in modo che venga lanciato una specie di segnale, che verrà preso e gestito da un'altra classe...per esempio la classe che gestisce la partita..Ed in + in questo segnale c voglio anche passare dei parametri, in questo caso l'intero uscito dal lancio del dado...
Ma ti sono chiare le 3 possibilità che ho elencato?? Almeno a grandi linee le differenze??
La più semplice sfruttando comunque la OOP è questa:
codice:
public interface RicevitoreDado {
void dadoLanciato(int numero);
}
public class GestoreLancioDado {
private RicevitoreDado rd;
public GestoreLancioDado(RicevitoreDado rd) {
this.rd = rd;
}
.....
// quando dovrà lanciare il "segnale" a chi implementa RicevitoreDado
rd.dadoLanciato(....);
}
public class GestorePartita implements RicevitoreDado {
....
.... new GestoreLancioDado(this);
public void dadoLanciato(int numero) {
// fai quello che vuoi con il numero del dado
}
}
Questo che ho appena mostrato, anche se abbozzato, non è il pattern "Observer" e non è nemmeno un "listener" (come inteso in AWT/Swing). È semplicemente un uso minimo/logico della OOP per disaccoppiare 2 classi e fare in modo che una possa invocare "qualcosa" su un altro oggetto "sapendo" solamente che implementa la interfaccia che rappresenta qualcuno che può ricevere la notifica.
Ti è chiaro?