Olá pessoal,
dei uma olhada no forum e encontrei um padrão de projeto Observer. Dei uma lida sobre e entendi oque ele faz. Mais quando fui implementar sirgiu alguns problemas e dúvidas.
Tenho uma tela que possui 2 radioBtn, uma para pessoa fisica e outra para juridica, quando aciono o evento de escolha dos radiobtn eu altero um atributo da minha classe (da propria tela) ou seja, criei um atributo String tipoCliente, e consequentemente quando altero os radiobtn dependendo da escolha eu seto “fisico/juridico”.
Na minha tela como ela ja extende JFrame não posso extender Observable, oque eu fiz… Criei uma classe que extendeu Observable. E novamente criei outro atributo na minha classe da tela, do tipo “ClasseCriadaEntendendoObservable observador”. E tambem criei minha classe Controller que extende Observer e implementei o update() mais esta errado, Bom deve ter ficado confuso minha explicação, entao, segue o código.
Obs: em relação aos codigos dos meus métodos, sei que não é bom do jeit oque estou fazendo, mais estou começando agora a usar mvc seguindo um tutorial.
public class ObservadorJuridicaFisica extends Observable {
private String tipoCliente;
public String getTipoCliente() {
return tipoCliente;
}
public void setTipoCliente(String tipoCliente) {
this.tipoCliente = tipoCliente;
}
}
//Tela
public class UICadastrarCliente extends javax.swing.JFrame {
private ObservadorJuridicaFisica observador;
private String tipoCliente;
//Metodo de notificação
private void rbtnCnpjItemStateChanged(ItemEvent evt) {
this.txtCadastrarClienteCPFCNPJ.setEnabled(true);
this.txtCadastrarClienteInscricaoEstadual.setEnabled(true);
this.tipoCliente = "juridico";
observador.notifyObservers(tipoCliente);
}
public class ClienteController extends Observable implements Observer {
private String tipoCliente;
public void update(ObservadorJuridicaFisica o, Object obj) {
this.tipoCliente = (String) o.getTipoCliente();
}
public List<Cliente> listaClientes(String tipoCliente) {
ClienteDao cliDao = null;
try {
if(tipoCliente.equals("fisico")) {
cliDao = new FisicaDao();
return cliDao.listarClientes();
} else {
cliDao = new JuridicaDao();
return cliDao.listarClientes();
}
} catch (SQLException ex) {
Logger.getLogger(ClienteController.class.getName()).log(Level.SEVERE, null, ex);
}
return null;
}
Em fim, minha dúvida é, como eu notifico a minha classe controller sobre a alteração do atributo tipoCliente atraves do método de alteração de check do radiobtn?