Olá.
Considere:
- um objeto Visao - GUI (Interface Gráfica com o Usuário);
- um objeto Controlador, que trata eventos de sistema, ações da GUI e
- objetos modelo
Considere que um objeto Visao recebe um objeto Controlador como parâmetro:
Controlador controlador = new Controlador(repositorio);
Visao visao = new Visao(controlador);
Considere também, que o papel do Controlador é repassar eventos de sistema para os objetos do Modelo, ou seja, uma ação X na GUI deverá ser repassada ao Controlador que por sua vez repassará ao Modelo.
Uma forma de desacoplar uma Visao de um Controlador, seria extrair uma interface comum para que uma Visao a implemente, pois o objetivo é trocar/subsituir uma Visao por outra.
Pergunta: Seria muita paranóia criar uma interface para que ambas, Visao e Controle a implemente?
Veja:
public interface VisaoInterface {
void entrarAlgo(Integer algo);
}
public class Janela extends JFrame implements VisaoInterface{
// private Controller controller;
// ou a própria interface
private VisaoInterface controller;
@Override
public void entrarAlgo(Integer algo) {
this.controller.entrarAlgo(algo);
}
// objetos GUI
private void ButtonEntrarAlgoActionPerformed(ActionEvent evt) {
this.entrarAlgo(Txt.getText());
}
}
public class Controller implements VisaoInterface{
@Override
public void entrarAlgo(Integer algo) {
this.modelo.fazerAlgo(algo);
}
}
Obrigado.