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?