Olá companheiros gujeiros, boa noite!
Quando procuro assuntos sobre redução de acoplamento sempre me deparo com a galera indicando o uso de IoC (Inversão de Controle).
Mas o uso de interfaces também é muito bem adequado quando se fala em Desktop. Vejam o código exemplo abaixo:
import javax.swing.*;
class View extends JFrame implements ModelListener {
private ActionListener control1;
private FocusListener control2;
public View(ActionListener control1, FocusListener control2) {
this.control1 = control1;
this.control2 = control2;
this.executar();
}
public void executar() {
JPanel painel = new JPanel();
JButton bot = new JButton("Enviar");
bot.addActionListener(control1);
painel.add(bot);
JTextField tex = new JTextField(5);
tex.addFocusListener(control2);
painel.add(tex);
add(painel);
}
public void atualizar(ModelEvent e) {
// ... Atualizar a visão quando alterado o modelo
}
}
public class ControlaBotao implements ActionListener {...}
public class ControlaTexto implements FocusListener {...}
public class ObjetoModelo implements Modelo {...}
public class Cadastro {
public static void main (String args[]) {
ObjetoModelo model = new ObjetoModel();
ControlaBotao cb = new ControlaBotao(model);
ControlaTexto ct = new ControlaTexto(model);
View visao = new View(cb, ct);
visao.setVisible(true);
}
}
Vejam, não existe acoplamento a não ser dentro do método main. Usando interfaces, a visão está desacoplada dos seus controladores, certo?
O mesmo vale para o “controlador -> modelo” e “modelo -> visão” seguindo as regras do MVC!
Ps: Não riam por favor que nem um colega meu que disse: “Puxa vida eu também adoraria enxergar isso como um código desacoplado… difícil vai ser convencer os demais!”
Por favor não deixem de opinar, sugerir, criticar…
Fico no aguardo pelas respostas pessoal! Agradeço muito a atenção de todos vocês! :idea:
O GUJ é forte justamente pela boa vontade das pessoas em ajudar e é isso que o faz crescer a cada dia mais. [color=red]OBRIGADO![/color]